以特定方式汇总一列中的值

时间:2018-12-17 11:24:05

标签: mysql sql

所以我有一个简单的表:

id     amount
 1.      40
 2.      50
 3.      60

我想创建一个查询,该查询将返回带有和的id编号,第一个id的总和为40,第二个id的总和为40 + 50 = 90,第三个id的总和为40 + 50 + 60 = 150。输出将是这样的:

id    sum
1.     40
2.     90
3.    150

3 个答案:

答案 0 :(得分:4)

您可以使用相关子查询:

select t.*,
       (select sum(t1.amount) from table t1 where t1.id <= t.id) as sum
from table t;

如果您使用的是最新版本,则可以:

select t.*,
       sum(amount) over (order by id)
from table t;

答案 1 :(得分:2)

这是一个MySQL 8+选项:

SELECT
    id,
    SUM(amount) OVER (ORDER BY id) sum
FROM yourTable;

Demo

这可能是编写查询的最有效方式。如果您恰巧使用的是MySQL的早期版本,请使用相关子查询:

SELECT
    id,
    (SELECT SUM(t2.amount) FROM yourTable t2 WHERE t2.id <= t1.id) AS sum
FROM yourTable t1;

答案 2 :(得分:0)

这很简单...

SELECT id, SUM(amount) OVER (ORDER BY id) sum FROM TableName