알려줘.
SQL에서 $\text{GROUP BY}$와 $\text{HAVING}$은 서로 다른 역할을 하며, $\text{HAVING}$은 $\text{WHERE}$와 비슷하지만 적용되는 대상이 다릅니다.
| 키워드 | 목적 | 적용 시점 | 사용 예시 |
|---|---|---|---|
| $\text{GROUP BY}$ | 행들을 특정 기준(열)으로 그룹화합니다. | $\text{FROM}$ 절 이후, $\text{WHERE}$ 절 이후에 적용됩니다. | 특정 부서별 평균 급여를 구하고 싶을 때 |
| $\text{HAVING}$ | $\text{GROUP BY}$로 그룹화된 결과에 조건을 적용하여 필터링합니다. | $\text{GROUP BY}$ 절 이후에 적용됩니다. | 평균 급여가 500만 원 이상인 부서만 보고 싶을 때 |
$\text{WHERE}$와 $\text{HAVING}$은 둘 다 조건을 설정하는 필터링 역할을 하지만, 적용되는 대상과 순서가 다릅니다.
| 구분 | WHERE | HAVING |
|---|---|---|
| 적용 대상 | $\text{FROM}$ 절에서 가져온 개별 행들 | $\text{GROUP BY}$ 절로 생성된 그룹들 |
| 사용 가능 조건 | 개별 행의 열 값에 대한 조건 (집계 함수 사용 불가) | 집계 함수의 결과 또는 그룹화된 열에 대한 조건 |
| 실행 순서 | $\text{FROM}$ $\rightarrow$ $\text{WHERE}$ $\rightarrow$ $\text{GROUP BY}$ $\rightarrow$ $\text{HAVING}$ $\rightarrow$ $\text{SELECT}$ $\rightarrow$ $\text{ORDER BY}$ |