그룹 함수
2023. 10. 7. 17:16ㆍBOOKS/SQL 전문가 가이드
그룹 함수
- ROLLUP 함수 : 소그룹 간의 소계 계산
- GROUP BY의 확장된 형태로 사용하기 쉬움
- 병렬로 수행할 수 있어 매우 효과적
- 시간 및 지역처럼 계층적 분류를 포함하는 데이터 집계에 적합
- CUBE 함수 : GROUP BY 항목 간 다차원적인 소계 계산 가능
- 결합 가능한 모든 값에 대해 다차원적 집계 생성 ⇒ ROLLUP에 비해 다양한 데이터 얻는 장점 but 시스템에 많은 부하를 줌
- GROUPING SETS 함수 : 특정 항목에 대한 소계 계산
- 원하는 부분의 소계만 손쉽게 추출 가능
ROLLUP, CUBE, GROUPING SETS 결과에 대한 정렬이 필요한 경우 ORDER BY 절에 정렬 칼럼을 명시해야 한다.
ROLLUP 함수
SELECT ...
GROUP BY **ROLLUP(칼럼명)**
[HAVING 그룹조건식]
[ORDER BY 칼럼명];
- 괄호 안의 집계 칼럼들을 우에서 좌로 하나씩 줄여가며, 점진적으로 상위 집계 그룹 생성
- 인수 순서가 바뀌면 수행 결과가 바뀌므로 인수 순서에 주의해야 함
- GROUPING 함수로 소계 된 계산 결과에는 1, 그 외의 결과에는 0으로 표시 ⇒ CASE나 DECODE함수 사용하여 소계를 나타내는 필드에 원하는 문자열 지정 가능
- ROLLUP(칼럼명1,(칼럼명2,칼럼명3))에서 (칼럼명2,칼럼명3)와 같이 괄호로 묶인 칼럼은 하나의 집합 칼럼으로 간주
CUBE 함수
SELECT ...
GROUP BY **CUBE(칼럼명)**
[HAVING 그룹조건식]
[ORDER BY 칼럼명];
- 괄호 안의 집계 칼럼들로 만들어지는 모든 경우의 수를 집계 기준으로 하여 집계 그룹 생성
- 인수 순서 바꿔도 결과 동일(정렬 순서는 바뀔 수 있음)
- GROUP BY + UNION ALL 사용하여 같은 결과를 만들 수 있다.
GROUPING SETS 함수
SELECT ...
GROUP BY **GROUPING SETS(칼럼명)**
[HAVING 그룹조건식]
[ORDER BY 칼럼명];
- 괄호 안에 명시된 집계 칼럼들 별로 여러 개의 개별적인 집계 그룹 생성
- GROUP BY + UNION ALL 사용하여 같은 결과를 만들 수 있다.
- 인수 순서 바꿔도 결과 동일
- ROLLUP, CUBE 기능과 동일하게 만들 수 있다.