使用累积和来计算循环中的总和

时间:2013-01-19 10:04:05

标签: mysql sql cumulative-sum

我有一个foreach来打印数据库中的所有数据。数据如下所示:

data_sum
63
78
25
35

对于循环中的每一行,我想添加总和,如下所示:

data_sum
63
141
166
201

我试过使用这个SQL查询:

SET @csum := 63;
SELECT id_account, data_sum, is_expense, (@csum := @csum + data_sum) AS cumulative_sum FROM economy_events
WHERE id_account = '4'
AND is_expense = '1'

但是当我尝试时,我只会SQLSTATE[HY000]: General error。这是我第一次尝试使用这种方法。我做错了什么?

提前致谢。

1 个答案:

答案 0 :(得分:2)

直接从您的问题粘贴时,您的查询在MySQL(至少5.1,5.5和5.6)中有效。

请参阅此SQLfiddle:http://sqlfiddle.com/#!8/53241/1/1

然而,你应该将@csum初始化为0,以便重现你想要的输出。 此外,为了使累积金额有意义,您需要添加一个 查询的order by子句。

如果从某种编程语言运行查询,问题可能是延续行有问题,或者查询包含两个语句。

您可以尝试将查询重写为

SELECT id_account, data_sum, is_expense,
       (@csum := @csum + data_sum) AS cumulative_sum
FROM economy_events, (SELECT @csum := 0) AS csums
WHERE id_account = '4'
AND is_expense = '1'