mysql - 如何在mysql中对前一行进行求和

标签 mysql sql

这个问题在这里已经有了答案:





Create a Cumulative Sum Column in MySQL

(9 个回答)


6年前关闭。




首先对不起我的英语

我试图找到一个 requete 来计算不同行中的值的总和,如下所示:

row1    result
2          2
5          7
7          14

最佳答案

假设第一行定义了排序,您可以使用相关子查询轻松完成此操作:

select r.row1,
       (select sum(t2.row1) from requete r2 where r2.row1 <= r.row1) as cumesum
from requete r;

对于较大的表,这可能效率低下,而变量会提高性能:
select r.row1,
       (@sum := @sum + r.row1) as cumesum
from requete r cross join
     (select @sum := 0) params
order by r.row1;

请注意,在这两种情况下,用于对行进行排序的列不需要是累积总和计算的同一列。

编辑:

在 MySQL 8+ 中,您当然应该使用:
select r.row1,
       sum(row1) over (order by row1) as cumesum
from requete r;

关于mysql - 如何在mysql中对前一行进行求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31232959/

相关文章:

php - 以编程方式用年月值填充列

mysql - 列出所有项目的项目编号、项目名称和员 worker 数 > 2 名员工参与其中

mysql - 如何定位和显示我的 .Net 页面的特定数据库字段

php - 将数组作为值存储在mysql中

mysql - 同一张表上有多个 COUNT

mysql - 如何将所有数据库从INNODB迁移到MARIADB?

来自带有 IN 子句的两个表的 mysql 查询请求

php - 返回按周 MySQL 分组的行数

javascript - 从不存在的表中选择时避免错误

php - 计算 : Complex Query vs PHP function call in a loop