SQL 통한 Database 관리

having 절?

JBS 12 2024. 8. 30. 00:12

`HAVING` 절은 SQL에서 `GROUP BY`와 함께 사용되어 그룹화된 데이터에 대해 조건을 지정하고 필터링하는 데 사용됩니다. `HAVING` 절은 집계 함수의 결과를 필터링할 수 있다는 점에서 `WHERE` 절과 다릅니다.

`WHERE` 절은 그룹화 또는 집계가 이루어지기 전에 개별 행을 필터링하는 데 사용되지만, `HAVING` 절은 그룹화된 데이터에 대해 집계 함수의 결과를 바탕으로 조건을 설정할 때 사용됩니다.

### `HAVING`의 기본 구조
```sql
SELECT column_name, aggregate_function(column_name)
FROM table_name
GROUP BY column_name
HAVING condition;
```

### 예제
직원 테이블(`employees`)이 있고, 각 부서별로 평균 급여를 계산한 뒤, 그 값이 50,000을 초과하는 부서만 보고 싶다고 가정해보겠습니다:

```sql
SELECT department, AVG(salary) AS avg_salary
FROM employees
GROUP BY department
HAVING AVG(salary) > 50000;
```

여기서:

- `GROUP BY department`는 부서별로 데이터를 그룹화합니다.
- `AVG(salary)`는 각 부서의 평균 급여를 계산합니다.
- `HAVING AVG(salary) > 50000`은 평균 급여가 50,000을 초과하는 부서만 선택합니다.

### `HAVING`과 `WHERE`의 차이점
- **`WHERE`**: 그룹화 전에 조건을 적용합니다. 개별 행을 대상으로 필터링합니다.
- **`HAVING`**: 그룹화 후에 조건을 적용합니다. 집계 결과를 대상으로 필터링합니다.

### 추가 예제
부서별로 직원 수가 10명 이상인 부서만 선택하는 경우:

```sql
SELECT department, COUNT(*) AS num_employees
FROM employees
GROUP BY department
HAVING COUNT(*) >= 10;
```

여기서 `HAVING COUNT(*) >= 10` 조건을 통해 직원 수가 10명 이상인 부서만 필터링할 수 있습니다.

### 요약
`HAVING` 절은 `GROUP BY`와 함께 사용하여 집계된 데이터에 조건을 걸 때 매우 유용하며, 집계 함수와 함께 사용할 수 있는 것이 특징입니다.

'SQL 통한 Database 관리' 카테고리의 다른 글

group by 뭐야  (0) 2024.08.30
집계함수 종류  (0) 2024.08.30
round ()  (0) 2024.08.30
date_format('2022-11-02', '%Y-%m-%d')  (0) 2024.08.30
substr('Gangneung Wonju', 8,4)  (0) 2024.08.30