Oracle 高级函数:分析函数与窗口函数
来源:互联网 发布:怎么把淘宝宝贝推广 编辑:程序博客网 时间:2024/05/25 01:34
Oracle 分析函数具有强大的功能。分析函数经常与窗口函数同时使用。
窗口函数总是为查询过程中的当前记录提供一个相关记录集,而且随着当前记录的推移,相应的记录集也会随之改变。
这非常类似与“滑动窗”的概念。分析函数的操作对象即为‘滑动窗’所指的记录的集合。
分析函数
排名函数: RANK(), DENSE_RANK(), ROW_NUMBER(), 一般与窗口函数一起使用。
例如测试表students 中的数据如下:
>> select * from students;
id name age
1 金瑞 18
2 钟岩 19
3 王山 19
4 刘迪 17
5 终会 18
6 柳青 19
1) RANK() 返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名都是一样的,同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。
>> select name,age, rank() over(order by age) position from students.
name age position
刘迪 17 1
终会 18 2
金瑞 18 2
钟岩 19 4
王山 19 4
柳青 19 4
分析结果可以看出: RANK() 函数返回相同的排序序号:当遇到相同的数据时,此时所有相同数据的排名都是一样的,
同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。
2) DENSE_RANK(), 返回一个唯一的值,除非遇到相同数据时,此时所有的数据排名都是一样的。
>> select name,age, dense_rank() over(order by age) position from students
name age position
刘迪 17 1
终会 18 2
金瑞 18 2
钟岩 19 3
王山 19 3
柳青 19 3
3) ROW_NUMBER(), 回一个唯一的值,当遇到相同数据时,排名按照记录集中记录的顺序依次递增。
>>select name,age, row_number() over(order by age) position from students
刘迪 17 1
终会 18 2
金瑞 18 3
钟岩 19 4
王山 19 5
柳青 19 6
4) PERCENT_RANK()函数
PERCENT_RANK 函数用于计算分区当中每个数值相对于同分区下其他数据行的百分比排名, 它的工作方式与RANK()相同, 不过该函数的返回值不是
一个整数形式的排名信息,而是给定值在排名当中的百分比信息。
窗口函数: OVER(), 函数针对某一个字段开窗。对于窗口函数,利用PARTITION BY 关键字进行分区。
>> select t.* dense_rank() over(partition by department order by salary) position
from salary t
order by employee_id ;
分析: over(partition by department order by salary) 为当前记录获得分区窗口,分区列为department;
当前记录所在的分区为当前窗口;order by salary 用于将窗口中的记录按照salary 进行排序;
dense_rank() 则获得当前记录在分区窗口中经过排序之后的位置。
- Oracle 高级函数:分析函数与窗口函数
- oracle高级函数-分析函数
- Oracle 分析函数/窗口函数
- 62.Oracle数据库SQL开发之 高级查询——使用分析函数之窗口函数
- Oracle SQL高级编程——分析函数(窗口函数)全面讲解
- [Hive]窗口函数与分析函数
- oracle:分析函数(评级函数、窗口函数等)
- oracle:分析函数(评级函数、窗口函数等)
- Related to Oracle 关于ORACLE中的分析函数与窗口函数
- 窗口函数之排名函数与分析函数
- oracle高级分析函数使用实例
- 分析函数之窗口函数
- 分析函数之窗口函数
- Hive 窗口函数、分析函数
- Hive 窗口函数、分析函数
- ORACLE 分析函数 窗口函数应用两篇
- ORACLE 高级函数应用
- Oracle 高级函数
- 99%国人不知道全球公认最有女人味的十个国家
- ZOJ1589
- Ospaf项目-commits词频统计模块
- 使用jQuery Ajax过滤实现REST不间断会话
- eclipse-maven插件jetty使用
- Oracle 高级函数:分析函数与窗口函数
- java学习路线------just do it!!!
- websphere的 DistrubutedMap缓存问题
- Unity Animation播放的时候失败
- 微信新增的图片广告今日正式上线
- hdu 3342 Legal or Not
- uboot中bootargs
- 简短的Swift-tableHeaderImage的视差滚动效果
- UMTS与WCDMA