Data Analysis 데이터 분석/SQL 통한 Database 관리

cube()

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

'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