WITH TEMP AS ( --임시테이블 생성
SELECT 'A' AS A, '1' AS B FROM DUAL
UNION
SELECT 'A' AS A, '2' AS B FROM DUAL
UNION
SELECT 'B' AS A, '1' AS B FROM DUAL
UNION
SELECT 'B' AS A, '2' AS B FROM DUAL
UNION
SELECT 'B' AS A, '3' AS B FROM DUAL
)
SELECT GROUPING_ID(A, B) AS GID, A, B, COUNT(*), 'ROLLUP' FROM TEMP GROUP BY ROLLUP (A, B)
UNION ALL
SELECT GROUPING_ID(A, B) AS GID, A, B, COUNT(*), 'CUBE' FROM TEMP GROUP BY CUBE (A, B)
ROLLUP/CUBE 모두 집계를 위한 구문이며
ROLLUP/CUBE 모두 GROUPING_ID로 원하는 집계를 선택할 수 있지만,
ROLLUP은 오른쪽에서 왼쪽 순으로 집계를 할 뿐이고,
CUBE는 그룹으로 묶인 집단에서 가능한 모든 경우에 수에 따라 집계를 해준다.
설명이 그지같으니 예제 따라쳐보고 노려보자.
댓글 없음 :
댓글 쓰기