根据单个 table 计算 运行 总数
Calculate running total from single table
我想根据以前的数据得到当前的总和。例子:
*******************************************
* 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)。
这是我的 table:
`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 查询根据上面的 table 计算 运行 总数,就像第一个示例中那样?
您可以使用变量来做到这一点:
select data_sum, (@s := @s + data_sum) as cume_sum
from table t cross join
(select @s := 0) params
order by ??;
在计算累加和时,您应该按某个值(通常是时间列)排序。
我想根据以前的数据得到当前的总和。例子:
*******************************************
* 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)。
这是我的 table:
`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 查询根据上面的 table 计算 运行 总数,就像第一个示例中那样?
您可以使用变量来做到这一点:
select data_sum, (@s := @s + data_sum) as cume_sum
from table t cross join
(select @s := 0) params
order by ??;
在计算累加和时,您应该按某个值(通常是时间列)排序。