ROLLUP: 첫번째 인자에 대해 소그룹+전체 합계(순서상관)
CUBE: 결합 가능한 모든 값에 대해 집계(순서 상관 x)
GROUPING SETS: 입력된 인자에 대해 소계(순서 상관 x)
소계, 합계로 집계된 컬럼 값이 NULL이면 1, 아니면 0 반환
- CASE WHEN 같은 구문에서 사용
SELECT CASE GROUPING(상품ID) WHEN 1 THEN '모든 상품ID' ELSE 상품ID END AS 상품ID, CASE GROUPING(월) WHEN 1 THEN '모든 월' ELSE 월 END AS 월, SUM(매출액) AS 매출액 FROM 월별매출 GROUP BY ROLLUP(상품ID, 월);
- 출력 시 NULL 대신 출력될 문자, 숫자들 지정할 때
소그룹 간의 소계를 계산
- 인자가 여러개 전달되어도 첫번째 값에 대해서만 합계 계산
- 마지막 최종 소계도 계산
- 인자 순서에 따라 결과가 다름
GROUP BY CUBE(컬럼1, 컬럼2) = GROUP BY 컬럼1, 컬럼2 UNION ALL GROUP BY 컬럼1 UNION ALL 모든 집합 그룹 결과
결합 가능한 모든 값에 대하여 다차원 집계 생성
- 정렬이 필요한 경우 ORDER BY 절에 명시적으로 정렬 칼럼을 표시해야함
- 인수의 순서가 바뀌면 정렬은 다를 수 있지만 결과는 같음 (모든 경우의 소계를 출력하기 때문)
- 2ᴺ개의 소계 생성(그룹핑 컬럼이 N개 일때)
GROUP BY CUBE(컬럼1, 컬럼2) = GROUP BY 컬럼1, 컬럼2 UNION ALL GROUP BY 컬럼1 UNION ALL GROUP BY 컬럼2 UNION ALL 모든 집합 그룹 결과
다양한 소계 집합을 만듦
표시된 인수들에 대한 개별 집계를 구함(소계가 필요한 것들만 넣음)
- 계층 구조가 아니라 평등한 관계 이므로 인수의 순서가 바뀌어도 결과는 같음
결과에 대한 정렬이 필요한 경우에는 ORDER BY 절에 명시적으로 정렬 칼럼이 표시되어야 함- 전체 합계는 안보여줌. 소계만.