Queen Julia 2024. 8. 20. 19:04

`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()`를 사용하면 데이터의 모든 가능한 집계 조합을 자동으로 생성해 주므로, 데이터에 대한 전반적인 이해와 분석을 쉽게 할 수 있습니다.