从单个表计算运行总计

时间:2015-10-28 01:15:29

标签: mysql running-total

我想根据以前的数据得到当前的总和。例:

*******************************************
*    Current balance    *    Total sum    *
*******************************************
     8500                    8500
     -500.50                 7999.50
     380.90                  8380.40
     -5500                   2880.40

除了使用简单的SUM()SELECT SUM(data_sum) FROM table ...)之外,我没有自己的代码可以展示,因为我不知道如何实现这一目标。

我发现了很多类似的问题,但我不理解答案(example 1)。

这是我的表:

`id` int(11) NOT NULL AUTO_INCREMENT,
`id_user` int(11) DEFAULT NULL,
`id_account` int(11) DEFAULT NULL,
`id_account_to` int(11) DEFAULT NULL,
`id_store` int(11) DEFAULT NULL,
`id_image` int(11) DEFAULT NULL,
`data_name` varchar(45) NOT NULL,
`data_name_short` varchar(45) NOT NULL,
`data_sum` decimal(10,2) DEFAULT NULL,
`data_file` text NOT NULL,
`data_note` text NOT NULL,
`is_transfered` tinyint(4) DEFAULT NULL,
`add_time` tinyint(4) DEFAULT NULL,
`datetime_payed` datetime NOT NULL,
`datetime_added` datetime NOT NULL,
`datetime_edited` datetime NOT NULL

现在问我的问题:如何根据上面的表格让SQL查询计算第一个例子中的运行总数?

1 个答案:

答案 0 :(得分:0)

您可以使用变量执行此操作:

select data_sum, (@s := @s + data_sum) as cume_sum
from table t cross join
     (select @s := 0) params
order by ??;

在进行累积求和时,您应该按某个值排序(通常是时间列)。