ROLLUP은 지정된 컬럼들에 대해 계층적으로 소계(subtotal)를 계산ROLLUP(a, b)는 a에 대한 소계, a와 b의 조합에 대한 소계, 그리고 전체 데이터에 대한 총계를 계산ROLLUP은 지정된 컬럼 순서에 따라 소그룹을 생성ROLLUP(a, b, c)는 a, a와 b, a와 b와 c, 그리고 전체 데이터에 대한 소계를 계산ROLLUP은 CUBE보다 더 제한적인 소그룹을 생성ROLLUP을 사용하면 데이터를 계층적으로 분석할 수 있으며, 각 계층에서 중요한 트렌드나 패턴을 식별할 수 있음SELECT REGION
, PRODUCT
, SUM(SALES_AMOUNT) AS TOTAL_SALES
FROM SALES
GROUP BY ROLLUP(REGION, PRODUCT);| Region | Product | TotalSales |
|---|---|---|
| 서울 | A | 1000 |
| 서울 | B | 1500 |
| 서울 | NULL | 2500 |
| 부산 | A | 800 |
| 부산 | B | 1200 |
| 부산 | NULL | 2000 |
| NULL | NULL | 4500 |
CUBE는 지정된 모든 컬럼에 대해 가능한 모든 조합의 소그룹을 만들고, 각 소그룹에 대한 소계(subtotal)를 계산CUBE(a, b)는 a, b, a와 b의 조합, 그리고 전체 데이터에 대한 소계를 계산CUBE(a, b)는 a에 대한 소계, b에 대한 소계, a와 b의 조합에 대한 소계를 모두 포함CUBE(A, (B, C))는 A, B와 C의 조합, 그리고 A와 B와 C의 조합에 대한 소계를 모두 포함CUBE에서 해당 컬럼을 제외하고 GROUP BY에 포함시킴GROUP BY a, CUBE(b)는 a가 고정된 상태에서 b에 대한 소계를 계산SELECT REGION
, PRODUCT
, SUM(SALES_AMOUNT) AS TOTAL_SALES
FROM SALES
GROUP BY CUBE(REGION, PRODUCT);| Region | Product | TotalSales |
|---|---|---|
| 서울 | A | 1000 |
| 서울 | B | 1500 |
| 서울 | NULL | 2500 |
| 부산 | A | 800 |
| 부산 | B | 1200 |
| 부산 | NULL | 2000 |
| NULL | A | 1800 |
| NULL | B | 2700 |
| NULL | NULL | 4500 |