구름조아

그룹함수, Rollup, Grouping Sets, Cube 본문

SQLD자격증공부/SQL활용

그룹함수, Rollup, Grouping Sets, Cube

김옹희 2023. 5. 11. 13:25

1. 그룹함수

테이블내 데이터들을 각 컬럼 별로 그룹화 아여 그룹별 결과를 출력하는 함수.

UNION, UNION ALL으로 대체 가능

ROLLUP 해당 컬럼의 소개 및 총계를 출력
GROUPING 컬럼의 소개 여부를 출력
GROUPING SETS 집계 대상 컬럼에 대한 소계 출력
CUBE 결합 가능한 모든 경우의 수에 대한 집계 출력

2. ROLLUP

계층 구조이기에 기준 컬럼수가 2개 이상일 때 순서에 따라 출력이 달라진다.

select class_num
        , subject
        , sum(score) as sum_score
from exam_result
group by rollup (calss_num, subject);

3. GROUPING SETS

  • 집계 대상 컬럼에 대한 소계를 구할 수 있는 그룹함수.
  • 기준 컬럼의 순서와 결과는 상관없음.
select class_num
        , subject
        , sum(score) as sum_score
from exam_result
group by grouping set (calss_num, subject);

4. CUBE

  • 결합 가능한 모든 값에 대한 다차원 집계를 출력.
  • 기준 컬럼의 순서와 결과는 상관 없음.
  • 다른 그룹 함수들 보다 성능상 불리함.
select class_num
        , subject
        , sum(score) as sum_score
from exam_result
group by cube (calss_num, subject);

5. GROUPING 함수

  • 해당 컬럼에서 소계 여부를 확인 할 수 있는 함수
  • 이 결과를 정렬에 사용 할 수 있다.
  • Having 절에 사용 가능 하다.
select class_num
        , subject
        , sum(score) as sum_score
        , grouping(class_num) class_num

        , grouping(subject) subject
from exam_result
group by cube (calss_num, subject);
ROLLUP 기준 컬럼이 1개 일 때 CUBE와 같음
기준 컬럼 순서에 따라 결과 다름
GROUPING SETS 기준 컬럼 순서와 결과는 무관
CUBE 기준 컬럼이 1개 일 때 ROLLUP과 같음
기준 컬럼의 순서와 결과는 무관