본문 바로가기

개발하자/ORACLE

사원의 급여와 부서별 소계 및 총계 출력하기

 

문제)다음 쿼리를 실행하면 사원의 급여와 부서별 소계 및 총계가 출력됩니다.

이 결과를 부서별 소계 순서대로 정렬하는 쿼리를 작성해 주세요.

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

 


sol)
SQL>SELECT deptno, empno, SUM(sal) sum_sal
        FROM scott.emp
        GROUP BY ROLLUP(deptno, empno)
        ORDER BY GROUPING(deptno) 
       //총합은 위치가 변하지 않아야 하기 때문에 제일 먼저DEPTNO 별로 그룹핑해준다.
      , MAX(sum_sal) OVER(PARTITION BY deptno) DESC
        //부서별 총합이 큰순으로 정렬해준다. 부서가 그룹핑되어 있기때문에 통채로 정렬된다.
      , deptno
      //sum_sal 값이 동일한 경우를 처리하는 로직이 없다면
      //DEPTNO순서가 흐트러지므로 정렬해준다.
      , empno; //마지막으로 EMPNO 를 정렬해준다.