반응형
데이터 그룹핑 방법 중에서 가장 짧지만 가장 많은 경우의 수의 그룹핑 결과를 보여주는 것이 CUBE이다. 본 포스트에서는 CUBE를 어떻게 사용하고 결과가 어떤지 살펴 볼 것이다.
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$
반응형
'ICT > SQL' 카테고리의 다른 글
SQL 문법 | 데이터 조회 및 필터 | INTERSECT (0) | 2021.09.15 |
---|---|
SQL 문법 | 데이터 조회 및 필터 | UNION 과 UNION ALL (0) | 2021.09.14 |
SQL 문법 | 데이터 조회 및 필터 | ROLL UP (0) | 2021.09.13 |
SQL 문법 | 데이터 조회 및 필터 | GROUPING SETS (0) | 2021.09.12 |
SQL 문법 | 데이터 조회 및 필터 | HAVING (0) | 2021.09.11 |
댓글