주케터의 메모장

[SQLD] 그룹 함수 ROLLUP,CUBE,GROUPING SETS 에 대해 알아보자! 본문

TEST/SQLD

[SQLD] 그룹 함수 ROLLUP,CUBE,GROUPING SETS 에 대해 알아보자!

JOOKETER 2023. 9. 4. 12:00
320x100

안녕하세요

주케터 입니다!

 

벌써 9월이 다가왔네요.

가을 날씨가 한걸음 더 다가온 것 같아요!

 

오늘은 SQLD 공부를 하면서 헷갈리기 쉬운

그룹함수에 대해 알아보려고 합니다!

 

바로 고고!

 


그룹 함수란 데이터를 GROUP BY하여 나타낼 수 있는 데이터를 구하는 함수 입니다!

역할에 따라 구분하면 집계 함수와 소계(총계)함수로 구분을 지을 수 있어요

 

집계함수 COUNT, SUM, AVG, MAX, MIN 등
소계(총계)함수 ROLLUP,CUBE,GROUPING SETS 등

그중 오늘은 소계(총계)함수를 배워볼까요?

1. ROLLUP

소그룹간의 소계 및 총계를 계산하는 함수입니다.

ROLLUP (A) A로 그룹핑
총합계
 ROLLUP (A,B) A,B로 그룹핑
A로 그룹핑
총합계
ROLLUP (A,B,C)  A,B,C로 그룹핑
A,B로 그룹핑
A로 그룹핑
총합계

위와 같이 나오는데요 ROLLUP(A,B,C)를 보시면 아시겠지만

롤업함수에서는 첫번째 순서가 매우 중요한 걸 보실 수 있었고

총합계가 무조건 포함이 된 걸 기억하시면 좋을 것 같아요.

 

2. CUBE

소그룹간의 소계 및 총계를 다차원적으로 계산할 수 있는 함수입니다.

GROUP BY가 일방향으로 그룹핑하며 소계를 구했다면

큐브는 조합할 수 있는 모든 그룹에 대한 소계를 구합니다.

즉, 많이 복잡하게 구해요!!

 

CUBE (A) A로 그룹핑
총합계
CUBE (A,B) A,B로 그룹핑
A로 그룹핑
B로 그룹핑
총합계
CUBE (A,B,C) A,B,C 그룹핑
A,B로 그룹핑
A,C로 그룹핑
B,C로 그룹핑
A로 그룹핑
B로 그룹핑
C로 그룹핑
총합계

그래서 롤업 함수와 달리 CUBE는 순서가 중요하지 않아요!

 

3. GROUPING SETS

특정 항목에 대한 소계를 계산하는 함수 입니다.

인자값으로 ROLLUP이나 CUBE를 사용할 수 있습니다.

GROUPING SETS (A,B) A로 그룹핑
B로 그룹핑
GROUPING SETS (A,B,( )) A로 그룹핑
B로 그룹핑
총합계
GROUPING SETS (A,ROLLUP(B)) A로 그룹핑
B로 그룹핑
총합계
GROUPING SETS (A,ROLLUP(B,C)) A로 그룹핑
B,C로 그룹핑
B로 그룹핑
총합계
GROUPING SETS (A,B,ROLLUP(C)) A로 그룹핑
B로 그룹핑
C로 그룹핑
총합계

그냥 GROUPING SETS만을 쓰게되면 총합계가 나오지 않는 독특한 친구죠?

이 친구도 CUBE와 동일하게 인수의 순서가 바뀌어도 동일하게 나온다는 특징이 있어요

 

꼭 숙지해서 실수없도록 해봐요 :)

 

오늘은 여기까지 입니다.

 

감사합니다.

그럼 안녕~!

728x90