반응형
오라클에서는 ROLLUP을 이용해
GROUP BY로 분류한 전체 ROW와 소계, 총계를 구할 수 있는데
일단 GROUPING(컬럼)을 사용해 일반 ROW인지
소계, 총계에 속하는 ROW인지 분류가 가능한데
GROUPING 사용하는 방법은 아래 링크를 확인해주면 되고
GROUP BY ROLLUP(컬럼)으로 소계, 총계를 생성할
기준 컬럼을 정해줄 수 있다
일반 GROUP BY 컬럼명과 비교해보면
일반 GROUP BY로는
GROUP에 속하는 모든 ROW와 총계를 구할 수 없고
소계만 구할 수 있기 때문에
맨 위와 같은 쿼리를 찍고 싶으면 UNION을 사용해야 하는데
이게 실전에서는 컬럼 값 종류에 따라
UNION이 무한하게 늘어나게 되는데 이러면 쓸게 못된다
반면 ROLLUP을 사용하면
저렇게 짧은 코드로도 쉽게 구현이 가능하다
마지막으로 예제에 사용한 쿼리는 아래와 같다
SELECT CASE WHEN G_JOB = 1 AND G_SAL = 1 THEN '총계'
WHEN G_SAL = 1 THEN '소계'
ELSE JOB END AS GUBUN -- 일반, 소계, 총계 확인용
,JOB
,SAL
FROM
(
SELECT JOB, SUM(SAL) AS SAL, GROUPING(JOB) G_JOB, GROUPING(SAL) G_SAL
FROM EMP
WHERE JOB IN ('ANALYST', 'PRESIDENT', 'MANAGER')
GROUP BY ROLLUP(JOB, SAL) -- JOB, SAL 기준으로 소계, 총계 생성
)
반응형
'SQL > Oracle' 카테고리의 다른 글
오라클 ROLLUP 개념 및 예제 (0) | 2020.11.23 |
---|---|
오라클 PL/SQL 수정 시 자동 백업방법(형상관리) (0) | 2020.11.23 |
오라클 GROUPING 함수 개념 및 예제 (0) | 2020.11.20 |
오라클 PL/SQL 변수에 기본값 주는 방법 (0) | 2020.11.18 |
오라클 PL/SQL 텍스트로 검색방법 (0) | 2020.11.18 |
댓글