SQL « как посчитать сумму всех предыдущих значений поля?

у меня есть таблица вида:

period, summa
...
11, 1000
12, 1200
13, 1000
14, 1100
...

мне нужно составить запрос, который бы выдал следующее:

period, summa
...
11, 1000
12, 2200
13, 3200
14, 4300
...

т.е. во втором столбце должна быть сумма всех предыдущих значений из данного поля (suаmma), можно ли такое сделать?

1 ответов



SELECT @total := 0;
SELECT  `period` ,  `summa`, @total := @total + `summa` as total
FROM  `mytable`
WHERE 1
LIMIT 0 , 30
 
вернет такое:
period, summa, total
...
11, 1000, 1000
12, 1200, 2200
13, 1000, 3200
14, 1100, 4300
...

declare @table table (period int, summa int)
insert into @table
values
(11, 1000),
(12, 2200),
(13, 3200),
(14, 4300)

select t.period, SUM(t1.summa)
from @table t
inner join @table t1 on t1.period < t.period
group by t.period