개발하자/ORACLE
사원의 급여와 부서별 소계 및 총계 출력하기
i구야
2015. 2. 14. 13:54
문제)다음 쿼리를 실행하면 사원의 급여와 부서별 소계 및 총계가 출력됩니다.
이 결과를 부서별 소계 순서대로 정렬하는 쿼리를 작성해 주세요.
SQL>SELECT deptno, empno, SUM(sal) sum_sal
FROM scott.emp
GROUP BY ROLLUP(deptno, empno);
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)
FROM scott.emp
GROUP BY ROLLUP(deptno, empno)
ORDER BY GROUPING(deptno)
//총합은 위치가 변하지 않아야 하기 때문에 제일 먼저DEPTNO 별로 그룹핑해준다.
, MAX(sum_sal) OVER(PARTITION BY deptno) DESC
, MAX(sum_sal) OVER(PARTITION BY deptno) DESC
//부서별 총합이 큰순으로 정렬해준다. 부서가 그룹핑되어 있기때문에 통채로 정렬된다.
, deptno
, deptno
//sum_sal 값이 동일한 경우를 처리하는 로직이 없다면
//DEPTNO순서가 흐트러지므로 정렬해준다.
, empno; //마지막으로 EMPNO 를 정렬해준다.
, empno; //마지막으로 EMPNO 를 정렬해준다.