【问题标题】:Mysql group concat with averages of exchangesMysql 组 concat 与交换的平均值
【发布时间】:2013-02-27 13:33:18
【问题描述】:

我有一个交易所列表,里面有汇率和日期,每天都会更新,

示例->

usd - 135 - 26/02/2013
Yen - 230 - 26/02/2013
GBP - 200 - 26/02/2013

usd - 136 - 25/02/2013
Yen - 230 - 25/02/2013
GBP - 205 - 25/02/2013

我有一个查询,将他们组合起来,然后 查询是这样的 ->

SELECT Curr, Src, GROUP_CONCAT(Rate, '|', Feeddate 
ORDER BY feeddate ASC SEPARATOR ',' ) AS RateCal 
FROM rates 

所以它看起来像这样 ->

usd - 135 | 26/02/2013, 136 | 25/02/2013
Yen - 230 | 26/02/2013, 230 | 25/02/2013
GBP - 200 | 26/02/2013, 206 | 25/02/2013

但我也有一个查询来获取每个月每个交易所的平均值 这是->

SELECT  Curr, DATE_FORMAT(Feeddate,'%Y-%M') AS 'Year', AVG(`Rate`) as 'Rate'
FROM rates,

但我现在想要的是像上面那样将每个交换组的月平均值连接起来

【问题讨论】:

  • 你想拥有什么?
  • 但是我现在想要的是像上面一样得到每个交换组的月平均值
  • 你能展示你想要的结果吗?

标签: mysql concat


【解决方案1】:

这就是您要找的吗?使用您的示例数据并添加一些 March 月份。

SQL DEMO

select curr, monthname(date), avg(rate)
from rates
group by curr, monthname(Date);

| CURR | MONTHNAME(DATE) | AVG(RATE) |
--------------------------------------
|  GBP |        February |     202.5 |
|  GBP |           March |       207 |
|  usd |        February |     135.5 |
|  usd |           March |       136 |
|  Yen |        February |       230 |
|  Yen |           March |     232.5 |

这看起来太简单了。所以请发表评论。

根据 OP 的评论:

SQL DEMO 2

select x.curr, 
GROUP_CONCAT(x.avgr, '|', x.mondate) as Months_Averages
from (select curr, monthname(date) mondate,
avg(rate) avgr
from rates
group by curr, monthname(date)
)x
group by x.curr;

| CURR |                      MONTHS_AVERAGES  |
------------------------------------------------
|  GBP |    202.5000| February,207.0000| March |
|  usd |    135.5000| February,136.0000| March |
|  Yen |    230.0000| February,232.5000| March |

【讨论】:

  • 如果您希望汇率为group_concat 通过交换,那么您需要向我们展示交换数据在主表中的情况... :)
  • 我想要的是如何连接我的 2 个查询,所以它看起来像这样 GBP - 205|February, 204|January, ...,所以我得到的是每个月的 GBP 平均值然后 groupconcat 它,所以我每个月都有价值。
  • @user2115506 请查看更新后的代码。这似乎符合您的需要,因为它每个月 group_concats 以及每种货币的每个月的平均值。
  • 甜,按我想要的方式工作,非常感谢,我尝试了很多方法,但我还是新手。
  • 很高兴它有帮助。如果您的问题得到了回答,那么您可以接受这个作为答案。因为它也有助于社区。没有压力,请看如何接受答案。谢谢。
猜你喜欢
  • 2022-11-03
  • 1970-01-01
  • 2021-10-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
相关资源
最近更新 更多