본문 바로가기
  • BLG-ZYNGIROK-모토-꿈꾸며-배우고-나누며-이루다
ICT/SQL

SQL 문법 | 데이터 조회 및 필터 | CUBE

by dazwischen 2021. 9. 13. 15:51
반응형

데이터 그룹핑 방법 중에서 가장 짧지만 가장 많은 경우의 수의 그룹핑 결과를 보여주는 것이 CUBE이다. 본 포스트에서는 CUBE를 어떻게 사용하고 결과가 어떤지 살펴 볼 것이다.

CUBE

SQL 문법 데이터 조회 필터 CUBE

01 CUBE : 다차원 소계

CUBE는 GROUPING SETS와 비슷하다.

SELECT	COL1, COL2, SUM(COL3)
FROM	TABLE
GROUP BY
	CUBE	(COL1, COL2)
;

하지만 결과는 GROUPING SETS아 완전히 다르다. 우선 위의 결과를 GROUP BY로 작성 할 때의 결과물을 살펴보자.

SELECT		COL1, NULL, SUM(COL3)
FROM		TABLE
GROUP BY	COL1
UNION ALL
SELECT		NULL, COL2, SUM(COL3)
FROM		TABLE
GROUP BY 	COL2
UNION ALL
SELECT		COL1, COL2, SUM(COL3)
FROM		TABLE
GROUP BY 	(COL1, COL2)
UNION ALL
SELECT		NULL, NULL, SUM(COL3)
FROM		TABLE
;

위의 결과에서 알 수 있듯이 COL1과 COL2로 만들 수 있는 모든 경우의 수의 그룹핑의 결과를 한 번에 구할 수 있다. 따라서 CUBE를 이용한 그룹핑을 다차원 소계라고도 한다.

EXAMPLE

카카오에서 광고 회사 A와 광고 회사 B를 통해서 두 가지 광고를 시행했다. 각 광고 회사들은 다양한 매체를 이용해서  광고를 진행했다. 광고매체의 영향이 큰지 광고 회사의 영향이 큰지 아니면 광고 회사의 특정 매체가 효과가 좋은지 알아보려고 합니다. 뭐가 좋은지 모르니까 다 알려주세요.

SELECT	AD_COM, AD_MEDIUM, SUM(VISITOR)
FROM	KAKAO_VISITOR
GROUP BY 
	CUBE	(AD_COM, AD_MEDIUM)
;

그럼 전체 방문자 수, 광고 회사 광고별 방문자 수, 광고 회사별 매체별 방문자 수 그리고 매체별 방문자 수를 알 수 있습니다.

02 CUBE : 경우의 수

좀더 기억하기 좋게 CUBE가 어떤 경우의 수를 만드는지 살펴보자.

  • CUBE 절에 하나의 요소가 있을 경우 : CUBE (COL1)
선택안함 COL1

총 두 가지 경우의 그룹핑이 발생한다.

  • CUBE 절에 두개의 요소가 있을 경우 : CUBE (COL1, COL2)
선택안함 COL1 COL1, COL2
  COL2  
    총 네 가지 경우의 그룹핑이 발생한다.
  • CUBE 절에 세개의 요소가 있을 경우 : CUBE (COL1, COL2, COL3)
선택안함 COL1 COL1, COL2 COL1, COL2, COL3
  COL2 COL2, COL3  
  COL3 COL2, COL3  

총 여덟 가지 경우의 그룹핑이 발생한다.

  • CUBE 절에 N 개의 요소가 있을 경우 : CUBE (COL1, COL2, ... , COLN)

여기서 우린 CUBE 절이 만드는 경우의 수는 2의 요소수 승인 걸 알 수 있다.

 

$2^N$

 

 

반응형

댓글