GROUPING SETS, ROLLUP, CUBE는 SQL에서 집계 결과를 좀 더 유연하게 생성할 수 있도록 해주는 GROUP BY의 확장 기능입니다. 각 기능의 차이점과 사용 방법을 설명드리고, 예시 테이블과 결과도 보여드리겠습니다.
예시 테이블 T1
먼저, 설명에 사용할 기본 테이블 T1은 다음과 같습니다:
COL1 COL2
A 10
A 20
B 30
B 40
NULL 50
예제
SELECT COL1, SUM(COL2)
FROM T1
GROUP BY GROUPING SETS ((COL1), ())
ORDER BY COL1;
위 예제에서는 GROUPING SETS를 사용해 두 가지 그룹을 지정했습니다:
(COL1): COL1을 기준으로 그룹화한 결과
(): 전체 테이블의 총합을 계산한 결과
결과
COL1 SUM(COL2)
A 30
B 70
NULL 50
NULL 150
2. ROLLUP
ROLLUP은 단계별로 부분 합계와 총합을 계산하는 기능으로, 계층적 집계를 수행할 때 유용합니다. ROLLUP을 사용하면 집계 기준에서 점진적으로 합계가 계산됩니다.
예제
SELECT COL1, SUM(COL2)
FROM T1
GROUP BY ROLLUP (COL1)
ORDER BY COL1;
ROLLUP (COL1)은 다음과 같은 단계를 포함합니다:
COL1의 각 개별 값('A', 'B', NULL)에 대한 합계
전체 합계 행 추가
결과
COL1 SUM(COL2)
A 30
B 70
NULL 50
NULL 150
3. CUBE
CUBE는 지정된 열들의 모든 가능한 조합을 집계하여 전체 합계와 함께 모든 그룹화 조합의 합계를 제공합니다. 이 기능은 교차 집계를 수행할 때 유용합니다.
예제
SELECT COL1, SUM(COL2)
FROM T1
GROUP BY CUBE (COL1)
ORDER BY COL1;
CUBE (COL1)을 사용하면 다음과 같은 조합들이 포함됩니다:
COL1의 각 개별 값에 대한 합계
전체 합계
결과
COL1 SUM(COL2)
A 30
B 70
NULL 50
NULL 150
정리
GROUPING SETS: 원하는 열 조합만 선택적으로 그룹화합니다.
ROLLUP: 단계별 집계로 각 값과 전체 합계를 순차적으로 제공합니다.
CUBE: 모든 가능한 열 조합에 대해 전체 합계를 포함한 교차 집계를 수행합니다.
각 기능을 활용하면 원하는 형태의 집계 결과를 유연하게 생성할 수 있습니다.