row_number() OVER(PARTITION BY)函数介绍
2016-12-01 16:20
603 查看
row_number() OVER(PARTITION BY)函数介绍
标签: classreportoracle工作c2012-04-01 16:34 42299人阅读 评论(2) 收藏 举报
分类:
Oracle
OVER(PARTITION BY)函数介绍
开窗函数 Oracle从8.1.6开始提供分析函数,分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行。
开窗函数指定了分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变化而变化,举例如下:
1:over后的写法:
over(order by salary) 按照salary排序进行累计,order by是个默认的开窗函数
over(partition by deptno)按照部门分区
over(partition by deptno order by salary)
2:开窗的窗口范围:
over(order by salary range between
5 preceding and 5 following):窗口范围为当前行数据幅度减5加5后的范围内的。
举例:
--sum(s)over(order by s range between 2
preceding and 2 following) 表示加2或2的范围内的求和
select name,class,s, sum(s)over(order by s range between 2 preceding and 2 following) mm from t2
adf 3 45 45 --45加2减2即43到47,但是s在这个范围内只有45
asdf 3 55 55
cfe 2 74 74
3dd 3 78 158 --78在76到80范围内有78,80,求和得158
fda 1 80 158
gds 2 92 92
ffd 1 95 190
dss 1 95 190
ddd 3 99 198
gf 3 99 198
over(order by salary rows between
5 preceding and 5 following):窗口范围为当前行前后各移动5行。
举例:
--sum(s)over(order by s rows between 2 preceding and 2 following)表示在上下两行之间的范围内
select name,class,s, sum(s)over(order by s rows between 2 preceding and 2 following) mm from t2
adf 3 45 174 (45+55+74=174)
asdf 3 55 252 (45+55+74+78=252)
cfe 2 74 332 (74+55+45+78+80=332)
3dd 3 78 379 (78+74+55+80+92=379)
fda 1 80 419
gds 2 92 440
ffd 1 95 461
dss 1 95 480
ddd 3 99 388
gf 3 99 293
over(order by salary range between unbounded preceding and unbounded following)或者
over(order by salary rows between unbounded preceding and unbounded following):窗口不做限制
3、与over函数结合的几个函数介绍
row_number()over()、rank()over()和dense_rank()over()函数的使用
下面以班级成绩表t2来说明其应用
t2表信息如下:
cfe 2 74
dss 1 95
ffd 1 95
fda 1 80
gds 2 92
gf 3 99
ddd 3 99
adf 3 45
asdf 3 55
3dd 3 78
select * from
(
相关文章推荐
- row_number() OVER(PARTITION BY)函数介绍
- row_number() OVER(PARTITION BY)函数介绍
- row_number() OVER(PARTITION BY)函数介绍
- row_number() OVER(PARTITION BY)函数介绍
- row_number() OVER(PARTITION BY)函数介绍 .
- row_number() OVER(PARTITION BY)函数介绍
- row_number() OVER(PARTITION BY)函数介绍
- row_number() OVER(PARTITION BY)函数介绍
- row_number() OVER(PARTITION BY)函数介绍
- row_number() OVER(PARTITION BY)函数介绍
- SQL中分析函数ROW_NUMBER() OVER(PARTITION BY GRADEOBJECTID ORDER BY BG.GRADEDATE DESC)的用法!!!
- Oracle之row_number() / rank() / dense_rank() / over(partition order by)序列函数
- row_number() OVER(PARTITION BY)函数
- 【Oracle】row_number() over(partition by )函数用法
- oracle 分析函数:ROW_NUMBER() OVER(PARTITION BY ID ORDER BY VERSION DESC)
- Oracle 分析函数row_number() over (partition by order by ) 的 Mysql的替代方法
- mySql 实现排序函数row_number() over(partition by )
- oracle的“over partition by”的用法,over不能单独使用,要和分析函数:rank(),dense_rank(),row_number()等一起使用。
- row_number() over(partition by a order by b desc) rn 用法
- OVER(PARTITION BY)函数介绍