본문 바로가기

Oracle/SQL Question

[퀴즈] Rollup을 이용한 소계의 정렬

다음 쿼리를 실행하면 사원의 급여와 부서별 소계 및 총계가 출력됩니다.
이 결과를 부서별 소계 순서대로 정렬하는 쿼리를 작성해 주세요.

SELECT deptno, empno, SUM(sal) sum_sal
  FROM scott.emp
 GROUP BY ROLLUP(deptno, empno)
;

정렬전 결과   정렬후 결과

DEPTNO

EMPNO

SUM_SAL

 

DEPTNO

EMPNO

SUM_SAL

10 7782 2450   20 7369 800
10 7839 5000   20 7566 2975
10 7934 1300   20 7788 3000
10   8750   20 7876 1100
20 7369 800   20 7902 3000
20 7566 2975   20   10875
20 7788 3000   30 7499 1600
20 7876 1100   30 7521 1250
20 7902 3000   30 7654 1250
20   10875   30 7698 2850
30 7900 950   30 7844 1500
30 7499 1600   30 7900 950
30 7521 1250   30   9400
30 7654 1250   10 7782 2450
30 7698 2850   10 7839 5000
30 7844 1500   10 7934 1300
30   9400   10   8750
    29025       29025

[정답보기] <== 트리플클릭
SELECT deptno, empno, SUM(sal) sum_sal
  FROM scott.emp
 GROUP BY ROLLUP(deptno, empno)
 ORDER BY GROUPING(deptno)
     , MAX(sum_sal) OVER(PARTITION BY deptno) DESC
     , deptno
     , empno

;