我有下表
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;
当我按月申请子句时,我想获得当月全天的累计金额,它只返回我当月的第一行
答案 0 :(得分:1)
一个适用于所有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;