문제)다음 쿼리를 실행하면 사원의 급여와 부서별 소계 및 총계가 출력됩니다.
이 결과를 부서별 소계 순서대로 정렬하는 쿼리를 작성해 주세요.
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 를 정렬해준다.
'개발하자 > ORACLE' 카테고리의 다른 글
오라클 계정생성/삭제 (0) | 2015.03.30 |
---|---|
행과 열 바꾸기 (0) | 2015.02.14 |
오라클 쿼리문으로 달력출력하기 (0) | 2015.02.14 |
최대값과 최소값 제외한 평균,총합 구하기(GREATEST,LEAST) (0) | 2015.02.09 |
문자만 자르기(정규식함수 사용-REGEXP_SUBSTR) (0) | 2015.02.09 |