문과생의 우당탕탕 공부 기록

11. ROLL UP 절) ROLLUP 함수의 의미와 사용방법 쉽게 이해하기 본문

SQL 공부/조인과 집계 데이터

11. ROLL UP 절) ROLLUP 함수의 의미와 사용방법 쉽게 이해하기

드르렁쿨쿨 2023. 1. 22. 22:42
ROLL UP 절의 의미

- 지정된 GROUPING 컬럼의 소계를 생성하는데 사용된다. 간단한 문법으로 다양한 소계를 출력할 수 있다.

 

BRAND, SEGMENT, SUM(QUANTITY)를 뽑을건데

그룹지을거야

ROLLUP (브랜드, 세그먼트) -> 브랜드별(ABC각각 베이직,프리미엄,전체값 / XYZ각각 베이직,프리미엄,전체값), 총합계

이렇게 구성된다.

 

ROLLUP함수는 쉽게 세로로 종이를 폈을 때, 말아올린다는(ROLL UP)느낌으로 생각하면 쉽다.

종이를 펴면, 전부 다(각각과 총합까지) 나오지만, 그 종이를 조금씩 밑에서 위로 말아올리면 한 항목씩 사라진다(?)

그래서 위에 부분만 중요시하게 남는..

자 그러면 다음 예시로 한번 가보자

SEGMENT그룹별로 나누면, 당연히 각 SEGMENT별인 PREMIUM과 BASIC 두개로 구분되어서 나온다. 

(*순서가 내림차순이 기본인데, 제가 자꾸 PREMIUM부터 나오네요..이유 아시는 분 답글부탁드립니다ㅜㅜ)

근데 이거를 ROLLUP하면!!!!

세그먼트별로 나오고, 총합계가 추가되는 것이다.

(*얘는 또 결과가 올바르게, BASIC 다음 PREMIUM 다음 전체 합계로 나온다.)


또 롤업없이 그룹바이해보자.

ROLLUP없이 그룹바이하면, 말 그대로 그룹 두개만 생긴다. 

ABC/XYZ 각 두개의 그룹만 순서대로 결과값에 나온다.

근데 두개로 ROLLUP함수를 쓰면,

각각 ABC브랜드,총합/XYZ브랜드,총합/전체 총합계

이렇게 나온다.

 

쉽게말해, 

GROUP BY별 합계 + ROLLUP절에 맨 앞에 쓴 컬럼 기준의 합계도 나오고, 전체 합계도 나오는 것이다.

그러면 BRAND와 SEGMENT를 둘다 롤업하는게 아니라, BRAND는 나두고, ROLLUP 세그먼트만해보자.

부분 ROLLUP을 진행한 것인데, BRAND별로 그룹이 나오는데

ABC 각각

ABC 중에서 SEGMENT의 총합계

XYZ 각각

XYZ 중에서 SEGMENT의 총합계

전체 총합계 X (없음!!!)

 

쉽게말해,

부분ROLLUP = GROUP BY별 합계 + ROLLUP절에 맨 앞에 쓴 컬럼 기준의 합계도 나오고, 전체 합계는 나오지 않는다.

 

 

 

ROLLUP말고 CUBE, GROUPING SETS 등 다른 그룹함수들이 궁금하다면 👇

 

https://beebee1203.tistory.com/19
 

[SQL] 그룹함수 의미 쉽게 구분하기- ROLLUP, CUBE, GROUPING SETS 등, 언제쓸까?

그룹함수의 의미 - 데이터를 GROUP BY로 나타낼 수 있는 데이터를 구하는 함수이다. 쉽게 말해, ORDER BY 어쩌고 조건처럼 GROUP BY 저쩌고 조건에서 '저쩌고'를 함수로 표현하는 것이다. 집계함수 : COUNT

beebee1203.tistory.com

 

Comments