有如下表:
T
date | number |
2019-01-01 | 20 |
2019-01-02 | 15 |
2019-01-03 | 10 |
2019-01-04 | 21 |
2019-01-05 | 88 |
2019-01-06 | 60 |
实现number按时间累加输出:
date | number |
2019-01-01 | 20 |
2019-01-02 | 35 |
2019-01-03 | 45 |
2019-01-04 | 66 |
2019-01-05 | 154 |
2019-01-06 | 214 |
方法一:子查询
select a.date,
(select sum(a.num) summary
from test b
where b.date <=a.date) as summary
from test a group by date
方法二:笛卡尔积
select b.date,sum(a.num) from test a,test b where a.date<=b.date group by b.date;
方法三:开窗函数
表内添加group 指段随便写
date | number | group |
2019-01-01 | 20 | a |
2019-01-02 | 35 | a |
2019-01-03 | 45 | a |
2019-01-04 | 66 | a |
2019-01-05 | 154 | a |
2019-01-06 | 214 | a |
select date,sum(num) over(partition by [group] order by date) summary from test
以上为三种实现方法,均能实现。