| 실행 순서 | 구문 | 설명 |
|---|---|---|
| ① | FROM / JOIN | 기본 테이블 및 조인된 테이블을 결합 (1차 테이블 생성) |
| ② | ON | 조인 조건을 평가하여 결합 여부를 결정 |
| ③ | WHERE | 조건에 맞는 행만 필터링 (2차 테이블 완성) |
| ④ | GROUP BY | 특정 컬럼 기준으로 그룹을 형성 |
| ⑤ | 그룹 함수 | 각 그룹에 대한 집계 결과(SUM, AVG, COUNT 등)를 계산 (3차 테이블 완성) |
| ⑥ | HAVING | 그룹 결과에 대한 조건을 필터링 (4차 테이블 완성) |
| ⑦ | SELECT | 최종적으로 가져올 컬럼을 지정 |
| ⑧ | ORDER BY | 정렬 기준에 따라 결과를 정렬 |
| ⑨ | LIMIT | 가져올 행의 개수를 제한 |
| ⑩ | 클라이언트 전달 | 최종 결과를 사용자(Client)에게 전달 |
FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY
SELECT department, COUNT(*) AS cnt
FROM employees
WHERE status = 'active'
GROUP BY department
HAVING COUNT(*) > 5
ORDER BY cnt DESC
LIMIT 10;
실행 순서 설명:
FROM employees → employees 테이블 불러오기WHERE status = 'active' → 비활성 계정 제거GROUP BY department → 부서별 그룹COUNT(*) → 각 부서 인원수 계산HAVING COUNT(*) > 5 → 5명 이하 부서는 제외SELECT department, COUNT(*) → 필요한 컬럼만 추출ORDER BY cnt DESC → 인원 수 기준 내림차순 정렬LIMIT 10 → 상위 10개 부서만 보여주기