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

cube() 인자 쓰는법

Queen Julia 2024. 8. 18. 17:01

`CUBE()`는 SQL에서 다차원 집계를 수행할 때 사용하는 함수로, 지정된 모든 열의 가능한 조합에 대해 집계 결과를 생성합니다. 즉, `CUBE()`를 사용하면 여러 차원의 데이터를 다양한 수준에서 분석할 수 있습니다.

### `CUBE()` 구문

```sql
SELECT column1, column2, aggregate_function(column3)
FROM table_name
GROUP BY CUBE(column1, column2);
```

### 인자 사용법

`CUBE()`는 `GROUP BY` 절 안에서 사용되며, 인자로 전달되는 열들의 모든 가능한 조합에 대한 집계를 생성합니다. 각 인자는 특정 집계 기준을 나타내며, `CUBE()` 내부에 여러 인자를 넣으면 그 인자들의 모든 조합에 대한 집계가 생성됩니다.

### 예시

#### 예시 테이블

아래와 같은 `sales` 테이블이 있다고 가정합니다:

| region | product | sales_amount |
|--------|---------|--------------|
| East   | A       | 100          |
| East   | B       | 150          |
| West   | A       | 200          |
| West   | B       | 250          |

#### 예시 쿼리

```sql
SELECT region, product, SUM(sales_amount) AS total_sales
FROM sales
GROUP BY CUBE(region, product);
```

### 결과

이 쿼리는 다음과 같은 결과를 생성합니다:

| region | product | total_sales |
|--------|---------|-------------|
| East   | A       | 100         | -- East 지역의 A 제품 판매 합계
| East   | B       | 150         | -- East 지역의 B 제품 판매 합계
| East   | NULL    | 250         | -- East 지역의 총 판매 합계
| West   | A       | 200         | -- West 지역의 A 제품 판매 합계
| West   | B       | 250         | -- West 지역의 B 제품 판매 합계
| West   | NULL    | 450         | -- West 지역의 총 판매 합계
| NULL   | A       | 300         | -- 모든 지역에서 A 제품 판매 합계
| NULL   | B       | 400         | -- 모든 지역에서 B 제품 판매 합계
| NULL   | NULL    | 700         | -- 전체 총 판매 합계

### 결과 해석

- **(region, product)**: 지역과 제품의 조합에 대한 집계.
- **(region)**: 각 지역별 총 집계 (제품 구분 없이).
- **(product)**: 각 제품별 총 집계 (지역 구분 없이).
- **()**: 전체 집계.

`CUBE()`는 `GROUP BY` 절에서 여러 차원의 데이터를 다양한 수준에서 분석하는 데 사용됩니다. 예를 들어, 위 쿼리에서 `CUBE(region, product)`는 `region`과 `product`의 모든 조합과 그 하위 집계들을 포함하여 총 9개의 집계 결과를 생성했습니다.

### 주요 포인트

- `CUBE()`를 사용하면 **모든 조합**에 대해 집계를 수행할 수 있습니다.
- `CUBE()`는 `ROLLUP()`보다 더 많은 집계 조합을 생성합니다.
- 여러 열을 인자로 제공하면 그 열들의 **모든 가능한 조합**에 대한 집계를 자동으로 수행합니다.

이처럼 `CUBE()`는 다차원 분석 시 다양한 집계 조합을 자동으로 생성해주기 때문에, 데이터 분석 시 매우 유용한 기능입니다.