mysql - 使用累加和循环统计总和

标签 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。这是我第一次尝试使用这种方法。我做错了什么?

提前致谢。

最佳答案

直接从问题粘贴时,您的查询可以在 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'

关于mysql - 使用累加和循环统计总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14413185/

相关文章:

java - 如何使用 Struts 2 在 Apache Tomcat 应用程序中建立数据库连接

mysql - 如何在拍卖网站中正确设计ItemsTable和Bisd表

c# - 为什么每次单击 C# 中的下一条记录按钮时数据表行数都会加倍?

php - 月度合计月份返回NULL,只输出运行合计

list - Haskell - 列表中累积的总和

SQL - 如何从总数中删除已计算的内容

html - 无法使用 SQLi 连接方法将数据插入 SQL

javascript - 在返回值之前等待内部函数完成

MySQL 计算表中两个日期之间的星期几

sql:像任何vs像所有