Oracle分析函数

Oracle分析函数

ID:38166893

大小:420.50 KB

页数:6页

时间:2019-06-06

Oracle分析函数_第1页
Oracle分析函数_第2页
Oracle分析函数_第3页
Oracle分析函数_第4页
Oracle分析函数_第5页
资源描述:

《Oracle分析函数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Oracle分析函数——函数RANK,DENSE_RANK,FIRST,LAST…RANK功能描述:根据ORDERBY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDERBY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDERBY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。然而,如果两行的确得到同样的排序,则序数将随后跳跃。若两行序数为1,则没有序数2,序列将给组中的下一行分配值3,DENSE_RANK则没有任何跳跃。SAMPLE:下例中计算每

2、个员工按部门分区再按薪水排序,依次出现的序列号(注意与DENSE_RANK函数的区别)DENSE_RANK功能描述:根据ORDERBY子句中表达式的值,从查询返回的每一行,计算它们与其它行的相对位置。组内的数据按ORDERBY子句排序,然后给每一行赋一个号,从而形成一个序列,该序列从1开始,往后累加。每次ORDERBY表达式的值发生变化时,该序列也随之增加。有同样值的行得到同样的数字序号(认为null时相等的)。密集的序列返回的时没有间隔的数SAMPLE:下例中计算每个员工按部门分区再按薪水排序,依次出现的序列号(注意与RANK函数的区别)SELECTdepartme

3、nt_id,first_name

4、

5、''

6、

7、last_nameemployee_name,salary,RANK()OVER(ORDERBYsalary)ASRANK_ORDER,DENSE_RANK()OVER(ORDERBYsalary)ASDENSE_RANK_ORDER  FROMemployeesSELECTdepartment_id,first_name

8、

9、''

10、

11、last_nameemployee_name,salary,RANK()OVER(PARTITIONBYdepartment_idORDERBYsalary)ASRANK_PART_ORDER,

12、DENSE_RANK()OVER(PARTITIONBYdepartment_idORDERBYsalary)ASDENSE_RANK_PART_ORDER   FROMemployeesFIRST功能描述:从DENSE_RANK返回的集合中取出排在最前面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录SAMPLE:下面例子中DENSE_RANK按部门分区,再按佣金commission_pct排序,FIRST取出佣金最低的对应的所有行,然后前面的MAX函数从这个集合中取出薪水最低的值;LAST取出佣金最高的对应的所有行

13、,然后前面的MIN函数从这个集合中取出薪水最高的值LAST功能描述:从DENSE_RANK返回的集合中取出排在最后面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录SAMPLE:下面例子中DENSE_RANK按雇用日期排序,FIRST取出salary最低的对应的所有行,然后前面的MAX函数从这个集合中取出薪水最低的值;LAST取出雇用日期最高的对应的所有行,然后前面的MIN函数从这个集合中取出薪水最高的值SELECTdepartment_id,first_name

14、

15、''

16、

17、last_nameemployee_name

18、,hire_date,salary,MIN(salary)KEEP(DENSE_RANKFIRSTORDERBYhire_date)OVER(PARTITIONBYdepartment_id)"Worst",MAX(salary)KEEP(DENSE_RANKLASTORDERBYhire_date)OVER(PARTITIONBYdepartment_id)"Best"FROMemployeesFIRST_VALUE功能描述:返回组中数据窗口的第一个值。SAMPLE:下面例子计算按部门分区按薪水排序的数据窗口的第一个值对应的名字,如果薪水的第一个值有多个,则从多个对

19、应的名字中取缺省排序的第一个名字LAST_VALUE功能描述:返回组中数据窗口的最后一个值。SAMPLE:下面例子计算按部门分区按薪水排序的数据窗口的最后一个值对应的名字,如果薪水的最后一个值有多个,则从多个对应的名字中取缺省排序的最后一个名字SELECTdepartment_id,first_name

20、

21、''

22、

23、last_nameemployee_name,hire_date,salary,FIRST_VALUE(first_name

24、

25、''

26、

27、last_name)OVER(PARTITIONBYdepartment_idORDERBYsalary

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。