报告功能

本文深入探讨了SQL中的报告功能和窗口函数的应用,通过多个实例展示了如何使用这些功能进行复杂的数据聚合和分析,特别强调了在不同场景下对数据进行有效汇总的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报告功能允许针对结果集执行各种集合函数。与窗口功能一样,它们无法指定本地窗口,因此会为每个分区分配相同的结果。

示例Ex#1

-------------------------

SELECT HIREDATE,SUM(SAL) "SALARY",SUM(SUM(SAL)) OVER (ORDER BY HIREDATE ROWS BETWEEN
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) "TOTALSALARY" 
FROM EMP 
GROUP BY HIREDATE 
ORDER BY HIREDATE;
示例Ex#2

-------------------------

SELECT HIREDATE,
SUM(SAL) "SALARY",
SUM(SUM(SAL)) OVER (ORDER BY HIREDATE ROWS BETWEEN
UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) "WINDOWSALARY" ,
SUM(SUM(SAL)) OVER() "REPORTINGSALES"
FROM EMP GROUP BY HIREDATE ORDER BY HIREDATE;
列过分句后的空洞表示,应将整个结果包括在总和中,这与使用无界的窗口函数具有相同的效果。在进行详细信息和汇总时,必须使用报告功能。

示例示例3

==================

SELECT HIREDATE,SUM(SAL) "SALARY",
SUM(SUM(SAL)) OVER() "REPORTINGSALES"
FROM EMP
WHERE JOB='MANAGER'
GROUP BY HIREDATE ORDER BY HIREDATE;
像排序函数一样,报告功能也可以通过分句包括分区,以将结果集分割为多个部分,从而可以将多个集合计算为结果集的不同子集。

示例示例4

==================

SELECT DEPTNO,EMPNO,SUM(SAL)"SALARY",SUM(SUM(SAL)) OVER(PARTITION BY DEPTNO) "DEPTSAL"
FROM EMP
GROUP BY DEPTNO,EMPNO
ORDER BY DEPTNO,EMPNO 
RATIO_TO_REPORT

---------------------------------------

示例样本#5

=============


SELECT DEPTNO,
 EMPNO,
 SUM(SAL)"SALARY",
 ROUND(SUM(SAL)/SUM(SUM(SAL)) OVER(PARTITION BY DEPTNO),2) "DEPTPERCENT"
 FROM EMP
 GROUP BY DEPTNO,EMPNO
 ORDER BY DEPTNO,EMPNO;

示例Ex#6

=============


SELECT DEPTNO,
EMPNO,
SUM(SAL)"SALARY",
ROUND(RATIO_TO_REPORT(SUM(SAL)) OVER(PARTITION BY DEPTNO),2) "DEPTRATIO"
FROM EMP
GROUP BY DEPTNO,EMPNO
ORDER BY DEPTNO,EMPNO;

From: https://bytes.com/topic/oracle/insights/676936-reporting-function

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值