Oracle 之常用分析函数

Oracle自带功能强大的分析函数,刚接触了好几个,才知道原来写的一些SQL完全可以简化,相见恨晚呐!

下面将介绍几个排名的函数。
row_number()
rank()
dense_rank()

row_number可以通过over 根据某字段排序完之后进行组内(如果有partition by)排序。
rank()是排名的函数,该函数组内排序后会进行跳号,分数相同的作为并列。
dense_rank()该函数不会跳号,分数相同为并列第一,下一个是第二。
Oracle 之常用分析函数_第1张图片

如有个分组(partition by)则可以实现组内排序功能,比如说一个成绩报告单,按科目的排序第一,第二,第三….就可以使用先over(partition by 课程字段 order by 课程字段 )

附录:看下面两张图慢慢消化吧

分组之后以分组字段排序,row_number()即使deptno相同也是不相同,注意

Oracle 之常用分析函数_第2张图片

分组之后根据工资来排序

Oracle 之常用分析函数_第3张图片

统计一个部门的总工资,见如下SQL

Oracle 之常用分析函数_第4张图片

上面的是分组累加,还可以进行排序累加。见下面:

Oracle 之常用分析函数_第5张图片

只做了解,有点难理解么,有么有

还有一个统计可能会用到的,移位函数lag()和lead()
Oracle 之常用分析函数_第6张图片

Oracle还提供开窗函数,太深奥了,我第一次接触都看了半天。

Oracle 之常用分析函数_第7张图片

over窗口函数可以借鉴http://blog.csdn.net/china_shrimp/article/details/52346278

专业墙纸贴纸厨房用具装饰出售,本人网店经营

博客对你有用记得访问下哦,增加下访问量,如有需要可以下单购买哦^_^。https://item.taobao.com/item.htm?id=569617707364

你可能感兴趣的:(oracle,数据库)