`CUBE()`는 SQL에서 그룹화된 데이터에 대해 다양한 차원의 집계를 수행할 때 사용하는 기능입니다. 주로 다차원 데이터 분석(OLAP: Online Analytical Processing)에서 사용되며, `GROUP BY` 절과 함께 사용되어 모든 가능한 조합에 대해 집계 결과를 생성합니다.
### `CUBE()`의 작동 방식
`CUBE()`는 지정된 그룹화 컬럼들의 모든 가능한 조합에 대해 집계 결과를 생성합니다. 예를 들어, `GROUP BY CUBE(A, B)`라고 하면, 다음과 같은 모든 조합에 대해 집계가 이루어집니다:
1. `A, B`로 그룹화
2. `A`로 그룹화
3. `B`로 그룹화
4. 전체 집계 (그룹화 없이)
이렇게 생성된 결과는 원래 데이터에 대한 종합적인 통찰을 제공합니다.
### 예제
다음은 `SALES` 테이블에서 `REGION`과 `PRODUCT`별로 매출(`SALES_AMOUNT`)을 집계하는 예제입니다:
```sql
SELECT
REGION,
PRODUCT,
SUM(SALES_AMOUNT) AS TOTAL_SALES
FROM
SALES
GROUP BY
CUBE(REGION, PRODUCT);
```
#### 결과
이 쿼리는 `REGION`과 `PRODUCT`의 모든 조합에 대해 매출 합계를 계산하며, 결과는 다음과 같이 나타날 수 있습니다:
| REGION | PRODUCT | TOTAL_SALES |
|---------|---------|-------------|
| North | A | 1000 |
| North | B | 1500 |
| South | A | 1200 |
| South | B | 1300 |
| North | NULL | 2500 | -- North의 모든 제품 합계
| NULL | A | 2200 | -- A 제품의 모든 지역 합계
| NULL | B | 2800 | -- B 제품의 모든 지역 합계
| NULL | NULL | 5000 | -- 전체 합계
### 해석
- **`North, A`**, **`North, B`** 등은 특정 지역과 제품에 대한 집계 결과입니다.
- **`North, NULL`**: `North` 지역의 모든 제품에 대한 총합입니다.
- **`NULL, A`**: 모든 지역에서 `A` 제품에 대한 총합입니다.
- **`NULL, NULL`**: 전체 매출 합계입니다.
### 요약
- **`CUBE()`**는 SQL에서 다차원 그룹화를 수행하여, 그룹화된 컬럼들의 모든 가능한 조합에 대해 집계 결과를 생성합니다.
- 이를 통해 데이터의 다양한 차원에서 분석을 수행할 수 있으며, 다차원 데이터 분석에 유용합니다.
`CUBE()`를 사용하면 데이터의 모든 가능한 집계 조합을 자동으로 생성해 주므로, 데이터에 대한 전반적인 이해와 분석을 쉽게 할 수 있습니다.
'Data Analysis 데이터 분석 > SQL 통한 Database 관리' 카테고리의 다른 글
where not exists (0) | 2024.08.20 |
---|---|
left outer join (0) | 2024.08.20 |
start with, connect by prior c, order siblings by (0) | 2024.08.20 |
grouping sets () rollup() (0) | 2024.08.19 |
partition by (0) | 2024.08.19 |