我需要找到以下数据的累积和:
以下查询:
SELECT created, COUNT( * )
FROM `transactions`
GROUP BY created
给我:
created COUNT( * )
2015-8-09 1
2015-8-15 1
2015-8-16 2
2015-8-17 1
2015-8-23 1
我尝试进行累积总和,如下所示:
SELECT t1.created, COUNT( * ) , SUM( t2.totalcount ) AS sum
FROM transactions t1
INNER JOIN (
SELECT id, created c, COUNT( * ) AS totalcount
FROM transactions
GROUP BY created
ORDER BY created
)t2 ON t1.id >= t2.id
GROUP BY t1.created
ORDER BY t1.created
但它给出的结果并不符合预期:
created COUNT( * ) sum
2015-8-09 5 6
2015-8-15 3 4
2015-8-16 6 8
2015-8-17 1 1
2015-8-23 4 5
如何产生以下结果:
created COUNT( * ) sum
2015-8-09 1 1
2015-8-15 1 2
2015-8-16 2 4
2015-8-17 1 5
2015-8-23 1 6
最佳答案
select tmp.*, @sum := @sum + cnt as cum_sum
from
(
SELECT created, COUNT( * ) as cnt
FROM `transactions`
GROUP BY created
ORDER BY created
) tmp
cross join (select @sum := 0) s
关于mysql - 为什么 MySQL 累积和会产生错误的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33325157/