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 |