您的位置:首页 > 数据库 > Oracle

OVER用法

2014-03-16 13:50 246 查看
over()函数是Oracle的分析函数,其语法如下:
函数名( [参数
]) over( [分区子句
]  [排序子句 [滑动窗口子句
] ])
分区子句类似于聚组函数所需要的group by,排序子句可看成是SQL语句中的order
by,只不过在此语句中还可指定null值排前(nulls first)还是排后(nulls
last)。
 
 
 
 
具体用法:
1、sum(num)
over()
SELECT JKRQ,SE,SUM(SE) OVER () FROM SBZSHX.SB_LC_YQNS_SP;
对查询字段进行求和,查询结果条数不变(区别于直接写sum)

 
2、sum(num) over (order by num)
select JKRQ,SE,sum(SE) over (order by SE) from SBZSHX.SB_LC_YQNS_SP;
对查询字段进行排序后,再累计求和

 
3、sum(num) over(partition by num)
select JKRQ,SE,sum(SE) over (PARTITION BY JKRQ) from SBZSHX.SB_LC_YQNS_SP;
对查询字段分区,在分区内求和(查询结果条数不变)

 
4、sum(SE) over (PARTITION BY JKRQ order by SE)
select JKRQ,SE,sum(SE) over (PARTITION BY JKRQ order by SE) from SBZSHX.SB_LC_YQNS_SP;
对查询字段进行分区,在分区内进行累计求和

 
5、ROW_NUMBER() OVER(ORDER BY SE)
SELECT JKRQ,SE,ROW_NUMBER() OVER(ORDER BY SE) from SBZSHX.SB_LC_YQNS_SP;
对查询字段进行排序,根据排序编号

 
6、RANK() OVER (ORDER BY SE)
SELECT JKRQ,SE,RANK() OVER (ORDER BY SE) FROM SBZSHX.SB_LC_YQNS_SP;
对查询字段进行排序,并根据查询字段的值编号

 
7、DENSE_RANK() OVER(ORDER BY SE)
SELECT JKRQ,SE,DENSE_RANK() OVER(ORDER BY SE) FROM SBZSHX.SB_LC_YQNS_SP;
对查询字段进行排序,并根据查询字段的值编号(连续)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  oracle OVER