소그룹 간의 소계 및 총계를 다차원적으로 계산할 수 있는 함수
GROUP BY 가 일방향으로 그룹핑하며 소계를 구했다면 CUBE는 조합할 수 있는 모든 그룹에 대한 소계를 집계한다.
| CUBE(A) | - A로 그룹핑
A별 그룹핑 + 총합계
SELECT ORDER_DT, COUNT(*)
FROM STARBUCKS_ORDER
GROUP BY CUBE(ORDER_DT)
ORDER BY ORDER_DT;

주문수량을 날짜별로 그룹핑한 결과 + 전체 총합계의 결과
ROLLUP 함수와 같은 결과
A, B별 그룹핑
SELECT ORDER_DT, ORDER_ITEM, COUNT(*)
FROM STARBUCKS_ORDER
GROUP BY CUBE(ORDER_DT, ORDER_ITEM)
ORDER BY ORDER_DT;

A, B별 그룹핑되고, A별 합계가 표시되고, 전체 총합계가 표시되는 부분은 ROLLUP 을 사용했을 때와 같다.
그런데 B별, 그러니까 주문음료별 그룹핑이 아래 추가로 표시되고 있다.
다음 쿼리와 같은 의미
SELECT ORDER_DT, ORDER_ITEM, COUNT(*)
FROM STARBUCKS_ORDER
GROUP BY ORDER_DT, ORDER_ITEM
UNION ALL
SELECT ORDER_DT, NULL, COUNT(*)
FROM STARBUCKS_ORDER
GROUP BY ORDER_DT
UNION ALL
SELECT NULL, ORDER_ITEM, COUNT(*)
FROM STARBUCKS_ORDER
GROUP BY ORDER_ITEM
UNION ALL
SELECT NULL, NULL, COUNT(*)
FROM STARBUCKS_ORDER
ORDER BY 1, 2;