oracle 分析函数over()

来源:百度知道 编辑:UC知道 时间:2024/06/18 01:21:04
select * from aa;
AA
---
1
2
2
2
3
4
5
6
7
9
select aa,sum(aa) over(order by aa range between 2 preceding and 2 following) from aa;
AA SUM(AA)OVER(ORDERBYAARANGEBETWEEN2PRECEDINGAND2FOLLOWING)
-- ---------------------------------------------------------
1 10
2 14
2 14
2 14
3 19
4 24
5 25
6 22
7 27
9

每行的对应数据窗口,aa的范围幅度是之前行和之后行都是2。
当aa=1时 sum(aa) 为:1+2+2+2+3 =10
当aa=2时 sum(aa) 为:1+2+2+2+3+4 =14
当aa=3时 sum(aa) 为:1+2+2+2+3+4+5 =19
当aa=4时 sum(aa) 为:2+2+2+3+4+5+6 =24
当aa=5时 sum(aa) 为:3+4+5+6+7 =25
当aa=6时 sum(aa) 为:4+5+6+7 =22
当aa=7时 sum(aa) 为:5+6+7+9 =27
当aa=9时 sum(aa) 为:7+9 =16