数据样例如下,
id | money | acc |
1 | 0 | 2000 |
2 | 85 | 0 |
3 | 100 | 0 |
4 | 19 | 0 |
编写SQL实现效果如下
id | money | acc |
1 | 0 | 2000 |
2 | 85 | 2085 |
3 | 100 | 2185 |
4 | 19 | 2204 |
5 | 21 | 2225 |
方法1:
with recursive t(id,money,acc) as (
select 1 id,0 money,2000 acc
union all
select t1.id,t1.money,t.acc+t1.money acc from t,salary t1 where t.id=t1.id-1)
select * from t;
方法2:
select id,money, (one_origin+new) as one from (
select id, money, first_value(acc) over (partition by 1 order by id) as one_origin,
sum(money) over(partition by 1 order by id ) as new
from salary) tmp;