gpt4 book ai didi

mysql - 如何编写查询以获取按月和按年分组的累计总和?

转载 作者:行者123 更新时间:2023-11-29 09:42:12 24 4
gpt4 key购买 nike

我有下表

id      Dates           Amount
1 20170221 -192161
2 20170222 884
3 20170223 -74
4 20170227 961
5 20170321 -292161
6 20170322 994
7 20170323 -44
8 20170327 691

我想要如下输出

id      Dates           Amount   Cumulative
1 20170221 -192161 -192161
2 20170222 884 -191277
3 20170223 -74 -191351
4 20170227 961 -190390
5 20170321 -292161 -482551
6 20170322 994 -481557
7 20170323 -44 -481601
8 20170327 691 -480910

我已经编写了此查询,但没有得到所需的输出

select id
, DATE_FORMAT(Dates,'%b-%Y')Dates
, Amount
, @total := @total + Amount as cumulative_sum
from mytable
, (Select @total := 0) as total;

当我应用按月分组条款时,我想要该月所有天的累计总和,它只返回该月的第一行

最佳答案

适用于所有版本的 MySQL 的一个选项是使用相关子查询来查找累积和:

SELECT
id,
Dates,
Amount,
(SELECT SUM(t2.Amount) FROM yourTable t2 WHERE t2.id <= t1.id) Cumulative
FROM yourTable t1
ORDER BY id;

如果您使用的是 MySQL 8+,那么我们可以尝试使用 SUM 作为分析函数:

SELECT
id,
Dates,
Amount,
SUM(Amount) OVER (ORDER BY id) Cumulative
FROM yourTable
ORDER BY id;

Demo

关于mysql - 如何编写查询以获取按月和按年分组的累计总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56404152/

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