gpt4 book ai didi

mysql - 当列名与SQL相同时如何进行GROUP BY和求和?

转载 作者:行者123 更新时间:2023-11-29 01:25:59 25 4
gpt4 key购买 nike

这是我的表列名称:

id_x | id_y | ts | data_a | data_b | data_c

我正在运行此查询:

SELECT ts, data_a, data_b, data_c from table 
WHERE id_x=4392
AND id_y IN (2545,2614,3349,4430)
AND ts BETWEEN '2017-02-01' AND '2017-03-01'

我得到的结果如下所示:

2017-02-01 | 4   | 4  | 0
2017-02-01 | 140 | 30 | 29
2017-02-02 | 4 | 4 | 0
2017-02-02 | 289 | 63 | 60

ts 字段多次列出。我更喜欢一次并总结它的单元格内容。
是否可以这样对 ts(时间戳)列进行分组?

想要的结果:

2017-02-01 | 144 | 34  | 29
2017-02-02 | 293 | 67 | 60

最佳答案

您需要提取日期并聚合:

SELECT DATE(ts) as ts_date, SUM(data_a) as data_a,
SUM(data_b) as data_b, SUM(data_c) as data_c
FROM table
WHERE id_x = 4392 AND
id_y IN (2545, 2614, 3349, 4430) AND
ts >= '2017-02-01' AND
ts < '2017-03-01'
GROUP BY DATE(ts) ;

注释:

  • 这会从时间戳中提取日期。据推测,存在时间成分。
  • GROUP BYSUM()进行您想要的处理。
  • WHERE 中的日期条件子句已更改,因此您可以获得 2 月的所有值,而没有 3 月的值。

如果您希望日期范围包括三月一日,请使用:

      ts >= '2017-02-01' AND
ts < '2017-03-02'

这个构造——带有 >=< -- 适用于日期和日期/时间。我强烈建议您不要使用BETWEEN使用日期/时间数据类型,因为结果可能会产生误导。

关于mysql - 当列名与SQL相同时如何进行GROUP BY和求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54553385/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com