叠加求和
作为窗口函数使用聚合函数
---oracle sql server DB2
Select id ,name ,price,
Sum (price) over (order by id) as current_sum
From product;
执行结果:
id | name | price | Current_sum | 计算 |
001 | 铅笔 | 1000 | 1000 | --1000 |
002 | 钢笔 | 500 | 1500 | --1000+500 |
003 | 橡皮 | 4000 | 5500 | --1000+500+4000 |
004 | 本 | 3000 | 8500 | --1000+500+4000+3000 |
使用avg函数求平均
Select id ,name ,price,
Avg (price) over (order by id) as current_avg
From product;
执行结果:
id | name | price | Current_sum | 计算 |
001 | 铅笔 | 1000 | 1000 | --1000/1 |
002 | 钢笔 | 500 | 750 | --(1000+500)/2 |
003 | 橡皮 | 4000 | 1833.33 | --(1000+500+4000)/3 |
004 | 本 | 3000 | 2125 | --(1000+500+4000+3000)/4 |
计算移动平均(指定最靠近的3行作为汇总对象)
Select id ,name ,price,
Avg (price) over (order by id rows 2 preceding ) as current_avg
From product;
执行结果:
id | name | price | Current_sum | 计算 |
001 | 铅笔 | 1000 | 1000 | --1000/1 |
002 | 钢笔 | 500 | 750 | --(1000+500)/2 |
003 | 橡皮 | 4000 | 1833.33 | --(1000+500+4000)/3 |
004 | 本 | 3000 | 2500 | --(500+4000+3000)/3 |
005 | 作业本 | 6800 | 4600 | --(4000+3000+6800)/3 |