1、RATIO_TO_REPORT()为比例函数
2、创建测试表,并插入数据
CREATE TABLE TEST_V(
DEPTNO VARCHAR2(10),
NAME VARCHAR2(10),
SAL NUMBER
);
3、实例1:要求计算各部门工资合计,以及该工资合计占总工资的比例:
SELECT TT.DEPTNO,
TT.DEPTALL,
SUM(TT.DEPTALL) OVER(),
round( DEPTALL / SUM(TT.DEPTALL) OVER(),2),
round(RATIO_TO_REPORT(TT.DEPTALL) OVER(),2)
FROM (SELECT T.DEPTNO, SUM(T.SAL) deptall FROM TEST_V T GROUP BY T.DEPTNO) TT;
注:1、当over()后不加任何内容时,是对所有数据进行汇总。
2、round(数据1,decimal_places)函数,对传入数据1进行四舍五入,decimal_places:小数点应取得位数。要想取整,decimal_places应置为0,若为空,最终结果为0。
实例2:计算各员工占本部门工资比例:
SELECT T.*,
SUM(T.SAL) OVER(PARTITION BY T.DEPTNO),
SAL / SUM(T.SAL) OVER(PARTITION BY T.DEPTNO),
RATIO_TO_REPORT(T.SAL) OVER(PARTITION BY T.DEPTNO)
FROM TEST_V T;