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

12. CUBE절) 다차원 소계를 출력해보자 본문

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

12. CUBE절) 다차원 소계를 출력해보자

드르렁쿨쿨 2023. 1. 25. 15:37
CUBE 절의 의미

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

 

CUBE절 문법

- CUBE를 여러 값으로 취할 수도 있고, -> GROUP BY CUBE (C1, C2, C3) ;

- CUBE를 특정값분리하여 지정할 수 있음-> GROUP BY C1, CUBE (C2, C3);

큐브절 예시

 

쉽게 말해, CUBE(C1, C2, C3)를 GROUPING SETS로 표현하면 총 8개의 소계가 발생한다.

GROUPING SETS (

(C1, C2, C3),

(C1, C2),

(C1, C3),

(C2, C3),

(C1),

(C2),

(C3),

()

)

의 값이랑 똑같다.

 

=> 즉, CUBE절 내 인자의 개수가 3개이면, 2의 3승의 소계(총8개)가 발생하게된다. 2의 N승값이 된다는 것이다.

 

 

CUBE절 실습

큐브는 조건을 다면체로 바라보는 것이다. 

해당 쿼리를 실행시키고, 결과값을 보자.

CUBE(A,B) => A,B로 / A로 / B로/ 총합계

BRAND,SEGMENT 별로

BRAND별로

SEGMENT별로

총합

 

이렇게 나오는데, ORDER BY를 해서 ABC-> XYZ->NULL 순으로 되어서 좀 순서가 엉망이다.

어쨌든 저 위에 언급한 대로 결과값이 나온다.

 

쉽게말해, CUBE는 GROUP BY 절 합계 + 브랜드 별 + SEMENT 별 + 전체합

 

 

부분 CUBE

그러면 두개 다 CUBE에 넣지않고, 하나는 밖으로 빼고 하나는 CUBE로 넣어보자.

그룹바이로 BRAND 빼고, SEGMENT 만 CUBE로 들어가는 것이다.

* SEGMENT 기준으로 하지않고, 전체 총합이 나오지 않는다. 

Comments