레슨 2 / 8·15분
집계와 그룹화
집계 함수
집계 함수는 여러 행의 데이터를 하나의 결과로 요약합니다. COUNT, SUM, AVG, MIN, MAX가 대표적입니다.
sql
-- 기본 집계 함수
SELECT
COUNT(*) AS 전체인원,
AVG(salary) AS 평균급여,
MIN(salary) AS 최소급여,
MAX(salary) AS 최대급여,
SUM(salary) AS 총급여합계
FROM employees;GROUP BY와 HAVING
GROUP BY는 특정 열의 값이 같은 행들을 그룹으로 묶어 집계합니다. HAVING은 그룹화된 결과에 조건을 적용합니다. WHERE가 개별 행을 필터링한다면, HAVING은 그룹을 필터링합니다.
sql
-- 부서별 평균 급여
SELECT department,
COUNT(*) AS 인원수,
AVG(salary) AS 평균급여
FROM employees
GROUP BY department;
-- HAVING — 그룹 조건
SELECT department,
AVG(salary) AS 평균급여
FROM employees
GROUP BY department
HAVING AVG(salary) >= 50000; -- 평균급여 5만 이상 부서만
-- 복합 예제: 부서별 통계 (인원 3명 이상)
SELECT department,
COUNT(*) AS 인원,
ROUND(AVG(salary), 0) AS 평균급여,
MAX(salary) - MIN(salary) AS 급여편차
FROM employees
WHERE hire_date >= '2020-01-01'
GROUP BY department
HAVING COUNT(*) >= 3
ORDER BY 평균급여 DESC;- •
COUNT(*)— 전체 행 수,COUNT(열)— NULL 제외 행 수 - •
SUM(열)— 합계,AVG(열)— 평균 - •
MIN(열)/MAX(열)— 최솟값 / 최댓값 - •
GROUP BY— 그룹화,HAVING— 그룹 조건 - •
ROUND(값, 자릿수)— 반올림
💡
SQL 실행 순서: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT. WHERE는 그룹화 전에, HAVING은 그룹화 후에 적용됩니다.