post list.

kakao adfit

2014년 5월 16일 금요일

[ORACLE] 임시테이블 및 GROUP BY ROLLUP/CUBE

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는 그룹으로 묶인 집단에서 가능한 모든 경우에 수에 따라 집계를 해준다.

설명이 그지같으니 예제 따라쳐보고 노려보자.

댓글 없음 :

댓글 쓰기