SQL 통한 Database 관리

GROUP BY 예시

JBS 12 2024. 8. 29. 20:59

select colB,
MAX(COLA) AS COLA1,
MIN(COLA) AS COLA2,
SUM(COLA+COLC) AS SUMAC
FROM TABLE_A
GROUP BY COLB;

이 쿼리는 `TABLE_A`라는 테이블에서 데이터를 선택하고, `COLB` 열을 기준으로 그룹화하여 집계된 결과를 반환합니다. 각 집계 함수는 `COLA`와 `COLC` 열의 값을 계산합니다.

### 쿼리의 주요 구성 요소

```sql
SELECT COLB,
       MAX(COLA) AS COLA1,
       MIN(COLA) AS COLA2,
       SUM(COLA + COLC) AS SUMAC
FROM TABLE_A
GROUP BY COLB;
```

- **`SELECT COLB`**: `COLB` 열을 선택하여 결과에 포함합니다. 이 열을 기준으로 데이터를 그룹화합니다.

- **`MAX(COLA) AS COLA1`**: 그룹별로 `COLA` 열의 최대값을 계산하고, 결과에서 이 열을 `COLA1`이라는 별칭으로 나타냅니다.

- **`MIN(COLA) AS COLA2`**: 그룹별로 `COLA` 열의 최소값을 계산하고, 결과에서 이 열을 `COLA2`라는 별칭으로 나타냅니다.

- **`SUM(COLA + COLC) AS SUMAC`**: 그룹별로 `COLA`와 `COLC` 열의 합을 계산한 후, 그 결과를 모두 합산하여 `SUMAC`이라는 별칭으로 나타냅니다.

- **`FROM TABLE_A`**: `TABLE_A` 테이블에서 데이터를 가져옵니다.

- **`GROUP BY COLB`**: `COLB` 열의 값에 따라 데이터를 그룹화합니다. 같은 `COLB` 값을 가진 행들이 하나의 그룹으로 묶여, 그 그룹 내에서 `MAX`, `MIN`, `SUM` 등의 집계 함수가 계산됩니다.

### 쿼리의 결과

이 쿼리는 다음과 같은 결과를 반환합니다:

- `COLB` 열의 각 고유 값에 대해:
  - **`COLA1`**: 그 그룹 내에서 `COLA` 열의 최대값.
  - **`COLA2`**: 그 그룹 내에서 `COLA` 열의 최소값.
  - **`SUMAC`**: 그 그룹 내에서 `COLA`와 `COLC`의 합을 구한 뒤, 그 합을 모두 더한 값.

### 예시

예를 들어, `TABLE_A`의 데이터가 다음과 같다고 가정해봅시다:

| COLB | COLA | COLC |
|------|------|------|
| A    | 10   | 5    |
| A    | 20   | 15   |
| B    | 30   | 10   |
| B    | 40   | 20   |
| A    | 15   | 10   |

이 쿼리의 실행 결과는 다음과 같습니다:

| COLB | COLA1 | COLA2 | SUMAC |
|------|-------|-------|-------|
| A    | 20    | 10    | 75    |
| B    | 40    | 30    | 100   |

### 설명:

- `COLB = A`:
  - `COLA1 = MAX(20, 10, 15) = 20`
  - `COLA2 = MIN(20, 10, 15) = 10`
  - `SUMAC = SUM((10+5) + (20+15) + (15+10)) = 75`

- `COLB = B`:
  - `COLA1 = MAX(30, 40) = 40`
  - `COLA2 = MIN(30, 40) = 30`
  - `SUMAC = SUM((30+10) + (40+20)) = 100`

이러한 집계 결과는 각 `COLB` 값에 대해 그룹화된 집계 정보를 제공합니다.