자격증/SQLD

SQLD 노랭이 105번 문제부터 나오는 ROLLUP, CUBE, GROUPING SETS 완벽 정리

ByeongJun 2023. 6. 7. 21:31
반응형

SQL 집계함수를 살펴보기 앞서, 

palette 님의 블로그 글이 너무 정리가 깔끔하게 잘 되어 있어 댓글을 남기고 가져왔다. 

 

글을 토대로 내가 정리하고자 하는 내용은 제목에도 나와 있듯

SQLD 노랭이 교재에서 105번부터 111번까지의 문제 및 해설 정리이다.

 

 

 

 

SQL 집계함수 - ROLLUP, CUBE, GROUPING SETS

SQL의 집계함수에 대해 살펴보겠습니다. 보통 GROUP BY절 외에 ROLLUP, CUBE 등 다양한 그룹함수에 대해서도 같이 알아보겠습니다. 1. GROUP BY 절 SELECT 상품ID, 월, SUM(매출액) AS 매출액 FROM 월별매출 GROUP B

for-my-wealthy-life.tistory.com

*캡쳐한 이미지 출처는 위의 블로그 임을 밝힙니다. 

SQL 집계함수 (이미지 클릭시 확대)
GROUP BY 가장 기본적이고 단순한 GROUP BY절만 사용한 결과
ROLLUP 소그룹간의 합계를 계산하는 함수

- 맨 처음 명시한 컬럼에 대해서만 소그룹 합계를 구함
- 전체 합계를 출력할 경우 ROLLUP 함수 활용
CUBE GROUP BY절에 명시한 모든 컬럼에 대해 소그룹 합계를 계산

- ROLLUP과 달리 (맨 처음 명시한 칼럼X) 월별까지 SELECT 가능
GROUPING
SETS
특정 항목에 대한 소계를 계산하는 함수

- 소그룹 합계와 전체 합계를 보여주는 ROLLUP, CUBE와 달리 
  각 소그룹별 합계만 간단하게 출력
GROUPING  집계함수 지원 함수 [직접적으로 그룹별 집계를 구하는 함수 X] 

- 집계가 계산된 결과에 대해서는 1의 값을 갖고
  그렇지 않은 결과에 대해서는 0의 값을 가짐

- NULL값으로 표시되었던 곳에 값을 넣어줌

- 집계가 계산된 결과에 대해서만 값을 넣어주면 되기 때문에
  GROUPING(컬럼명)=1인 경우에만 '모든상품ID' 또는 '모든월'
  값을 부여했고 0인 경우에는 원래대로 상품ID와 월을 입력

 

 

 

  • CUBE, GROUPING SETS, ROLLUP 세가지 그룹 함수 모두 일반 그룹함수로 동일한 결과 추출 가능하며, 
    집계된 레코드에서 집계 대상 컬럼 이외의 GROUP 대상 컬럼의 값은 NULL을 반환
  • ROLLUP 함수는 함수의 인자로 주어진 컬럼의 순서에 따라 결과가 달리지므로 컬럼의 순서가 중요
  • CUBE 그룹 함수는 인자로 주어진 컬럼의 결합 가능한 모든 조합에 대해 집계를 수행하기 때문에
    다른 그룹 함수에 비해 시스템에 대한 부하가 큼
  • 만약 A 테이블 뿐만 아니라 B 테이블의 모든 조합에 대해 총 합계까지 추출한다면 CUBE 함수
  • GROUPING SETS 함수를 사용해 입력된 인수들에 대한 개별 집계를 구할 수 있음

 

반응형