所以我有一个简单的表:
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
答案 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;
这可能是编写查询的最有效方式。如果您恰巧使用的是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