文档详情

Oracle分析函数教程_苏南生.doc

发布:2017-03-20约7.93千字共12页下载文档
文本预览下载声明
Oracle ERP最佳技术实践 E-Business Suite Oracle分析函数学习总结 Author: 苏南生 Creation Date: August 22, 2014 Last Updated: August 22, 2014 Document Ref: Version: 1.0 Approvals: Approver 1 Approver 2 Copy Number _____ Document Control Change Record 1 Date Author Version Change Reference August 3, 14 Nansheng.su Draft 1a No Previous Document Reviewers Name Position Distribution Copy No. Name Location Library Master Project Library Project Manager Note To Holders: If you receive an electronic copy of this document and print it out, please write your name on the equivalent of the cover page, for document control purposes. If you receive a hard copy of this document, please write your name on the front cover, for document control purposes. Contents Document Control ii 1. 分析函数 2 1.1 分析函数的作用 2 1.2 分析函数的语法 2 1.3 分析函数的分类 3 1.4 Partition子句 3 1.5 Order By 子句 4 2.分析函数使用实例 6 2.1 使用分析函数来为记录排名 6 2.2 使用分析函数为记录进行分组排名 7 3.分析函数小结 8 3.1 分析函数汇总 8 2. Open and Closed Issues for this Deliverable 10 Open Issues 10 Closed Issues 10 分析函数 1.1 分析函数的作用 有些很难在直接的SQL中做到的SQL中做的查询但实际上是很普通的操作, 例如: 1、逐行的显示一个部门的累计工资。每行包括前面 各行工资的总和。 2、查找一组内的百分数——显示在某些部门中付给个人的总工资的百分数。 将他们的工资与该部门的工资总和相除。 3、查找上一年度各个销售区域排名前10的员工 4、按区域查找上一年度订单总额占区域订单总额20%以上的客户 5、查找上一年度销售最差的部门所在的区域 6、查找上一年度销售最好和最差的产品 1.2 分析函数的语法 function_name(argument,argument,…) over (partition-cluseorder-by-clausewindowing clause) 例如,列出每个部门工资最高的前3个人: select * from (select deptno, rank() over(partition by deptno order by sal desc) rk, ename, sal from emp) where rk = 3; 运行结果: rank就是函数名 ()是分析函数的参数,每个函数有0~3个参数,参数可以是表达式,例如:sum(sal+comm) over 是一个关键字,用于标识分析函数,否则查询分析器不能区别聚集函数和分析函数 partition by deptno是可选的分区子句,如果不存在任何分区子句,则全部的结果集可看作一个单一的大区 order by sal是可选的order by 子句,有些函数需要它,有些则不需要.依靠已排序数据的那些函数,如:用于访问结果集中前一行和后一行的LAG和LEAD,必须使用,其它函数,如AVG,则不需要.在使用了任何排序的开窗函数时,该子句是强制性的,它指定了在计算分析函数时一组内的数据是如何排序的. 1.3 分析函数的分类 Oracle提供了26个分析函数供大家使用,它们按照功能分为5类: -- rank函数(等级函数) :用于寻找前N种查询 -- wind
显示全部
相似文档