<aside>
💡 GROUP BY 절과 HAVING 절의 특성
- GROUP BY, HAVING 절에서는 SELECT 절과 달리 ALIAS 명을 사용할 수 없다.
- 집계 함수는 WHERE 절에는 올 수 없다.
(집계 함수를 사용할 수 있는 GROUP BY 절보다 WHERE 절이 먼저 수행되기 때문)
- WHERE 절은 전체 데이터를 GROUP으로 나누기 전에 행들을 미리 제거시킨다.
</aside>
GROUP BY
- 데이터를 그룹별로 묶을 수 있도록 해주는 절
- GROUP BY 뒤에는 그룹핑의 기준이 되는 컬럼이 오게 된다. (하나 이상)
집계 함수
데이터를 그룹별로 나누면 그룹별로 집계 데이터 도출이 가능해진다.
| COUNT(*) |
전체 Row를 Count하여 반환 |
| COUNT(컬럼) |
컬럼값이 Null 인 Row를 제외하고 Count하여 반환 |
| COUNT(DISTINCT 컬럼) |
컬럼값이 Null 이 아닌 Row 에서 중복을 제거한 Count 반환 |
| SUM(컬럼) |
컬럼값들의 합계 반환 |
| AVG(컬럼) |
컬럼값들의 평균 반환 |
| MIN(컬럼) |
컬럼값들의 최솟값 반환 |
| MAX(컬럼) |
컬럼값들의 최댓값 반환 |
HAVING
- GROUP BY 절을 사용할 때 WHERE 절처럼 사용하는 조건절
- 데이터를 그룹핑한 후 특정 그룹을 골라낼 때 사용
- HAVING 절은 SELECT 절에 명시되지 않은 집계함수로도 조건을 부여할 수 있다.
- 논리적으로 HAVING절은 SELECT 절보다 먼저 수행되기 때문
SELECT 절에서 정의한 ALIAS 를 사용할 수 없다.