分析函数
来源:互联网 发布:国际贸易数据库 编辑:程序博客网 时间:2024/04/29 07:04
ratio_to_report报表处理函数
除报告详细数据外,许多报告中还包括每行总数的百分比。例如,每名客户的订单相对于总订单的百分比,或每位销售代表的销售额相对于总销售额的百分比。
传统上,Oracle计算百分比的方法是在总计报告的子查询中使用SUM函数总计报告,然后把那个结果放到细节表中相除来计算百分比。
分析函数RATIO_TO_REPORT 用来计算当前记录的指标expr占开窗函数over中包含记录的所有同一指标的百分比. 这里如果开窗函数的统计结果为null或者为0,就是说占用比率的被除数为0或者为null, 则得到的结果也为0.
开窗条件query_partition_clause决定被除数的值, 如果用户忽略了这个条件, 则计算查询结果中所有记录的汇总值.
用户不能使用其他分析函数或者ratio_to_report作为分析函数ratio_to_report的参数expr, 也就是说这个函数不能循环使用. 但我们可以使用其他普通函数作为这个分析函数的查询结果.
RATIO_TO_REPORT解析函数使得这种类型的查询更容易编码。它的格式如下:
RATIO_TO_REPORT (expr) OVER(query_partition_clause)
- /* FORMATTEDON 2009/11/10 20:24 (FORMATTER PLUS V4.8.8) */
- SELECT ENAME, SAL, DEPTNO, RATIO_TO_REPORT (SAL) OVER () AS RR
- FROM SCOTT.EMP
- WHERE DEPTNO = 10;
ENAME
SAL
DEPTNO
RR
CLARK
2,450
10
0.28
KING
5,000
10
0.571428571428571
MILLER
1,300
10
0.148571428571429
- /* FORMATTEDON 2009/11/10 20:36 (FORMATTER PLUS V4.8.8) */
- SELECT ENAME, SAL, DEPTNO,
- RATIO_TO_REPORT (SAL) OVER (PARTITION BY DEPTNO) AREA_PCT
- FROM SCOTT.EMP;
ENAME
SAL
DEPTNO
AREA_PCT
CLARK
2,450.0000000000
10
0.2800000000
KING
5,000.0000000000
10
0.5714285714
MILLER
1,300.0000000000
10
0.1485714286
JONES
2,975.0000000000
20
0.2735632184
FORD
3,000.0000000000
20
0.2758620690
ADAMS
1,100.0000000000
20
0.1011494253
SMITH
800.0000000000
20
0.0735632184
SCOTT
3,000.0000000000
20
0.2758620690
WARD
1,250.0000000000
30
0.1329787234
TURNER
1,500.0000000000
30
0.1595744681
ALLEN
1,600.0000000000
30
0.1702127660
JAMES
950.0000000000
30
0.1010638298
BLAKE
2,850.0000000000
30
0.3031914894
MARTIN
1,250.0000000000
30
0.1329787234
First,Last,First_value,Last_value取基数的分析函数
First功能描述:从DENSE_RANK返回的集合中取出排在最前面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。
Last功能描述:从DENSE_RANK返回的集合中取出排在最后面的一个值的行(可能多行,因为值可能相等),因此完整的语法需要在开始处加上一个集合函数以从中取出记录。
FIRST_VALUE、LAST_VALUE:返回结果集中排在第一位和最后一位的值。
语法是:FIRST_VALUE (expr) OVER ( analytic_clause)
- /* FORMATTEDON 2009/11/10 20:51 (FORMATTER PLUS V4.8.8) */
- SELECT ENAME, DEPTNO, SAL,
- MIN (SAL)KEEP (DENSE_RANK FIRST ORDER BY DEPTNO) OVER (PARTITION BY DEPTNO) "Worst",
- MAX (SAL)KEEP (DENSE_RANK LAST ORDER BY DEPTNO) OVER (PARTITION BY DEPTNO) "Best"
- FROM SCOTT.EMP;
- 分析函数
- 分析函数
- 函数分析
- 分析函数
- 分析函数
- 分析函数
- 分析函数
- 分析函数
- 分析函数
- 分析函数
- 分析函数
- 分析函数
- 分析函数
- 分析函数
- 分析函数
- 分析函数
- 分析函数
- 分析函数
- Graham扫描算法(Graham Scan Algorithm)
- 预计未来自住型商品房项目的热度会逐渐降低
- oracle安装笔记-linux下无法使用鼠标控制历史命令
- shell 自动补全(compgen complete)
- 我个人有一个观点是继续实施分类调控
- 分析函数
- myeclipse优化
- 介绍ListView中的几种位置关系和LayoutAnimation在listview中的应用
- 网传“秘笈”
- 数据结构之直接插入排序(C++实现)
- 多线程学习总结(二)
- poj 2513 Colored Sticks 并查集 字典树 欧拉回路判断
- 短码生成算法及url二维码生成
- hdu 3065 病毒侵袭持续中(AC自动机)