Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> How to use RATIO_TO_REPORT with ROLLUP?
Hi there.
This seems like a stupid question, but I cannot figure out how to combine RATIO_TO_REPORT and ROLLUP.
A simple example is the following:
select deptno, ename, sum(sal),
round(ratio_to_report(sum(sal)) over () * 100) as percentage
from emp
group by rollup(deptno, ename)
order by deptno, ename;
which is clearly wrong, because the result is:
DEPTNO ENAME SUM(SAL) PERCENTAGE ---------- ---------- ---------- ----------
10 CLARK 2450 3 10 KING 5000 6 10 MILLER 1300 1 10 8750 10 20 ADAMS 1100 1 20 FORD 3000 3 20 JONES 2975 3 20 SCOTT 3000 3 20 SMITH 800 1 20 10875 12 30 ALLEN 1600 2 30 BLAKE 2850 3 30 JAMES 950 1 30 MARTIN 1250 1 30 TURNER 1500 2 30 WARD 1250 1 30 9400 11 29025 33
The percentage for the last row should be 100, not 33, for row 4 it should be 30, for row 1 it should be 8, etc. I cannot figure out how to make the partitions for the OVER() clause to make this work. And presumably I would need some DECODE and GROUPING for various cases for that column.
Any advice?
TIA. Finn Received on Thu May 16 2002 - 16:31:16 CDT
![]() |
![]() |