문제
다음 SQL문의 실행 순서로 가장 옳은 것은?
SELECT 부서, AVG(급여) AS 평균급여 FROM 직원 WHERE 입사일 >= '2020-01-01' GROUP BY 부서 HAVING AVG(급여) > 5000000 ORDER BY 평균급여 DESC;
① FROM → WHERE → SELECT → GROUP BY → HAVING → ORDER BY ② FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY ③ SELECT → FROM → WHERE → GROUP BY → HAVING → ORDER BY ④ FROM → GROUP BY → WHERE → HAVING → SELECT → ORDER BY
정답
2번
해설
②번이 정답이다. SQL의 논리적 실행 순서는 FROM(테이블 선택) → WHERE(행 필터링) → GROUP BY(그룹화) → HAVING(그룹 필터링) → SELECT(컬럼 선택) → ORDER BY(정렬) 순이다. WHERE는 그룹화 전에, HAVING은 그룹화 후에 적용되며, SELECT는 HAVING 이후에 실행되어 별칭을 ORDER BY에서 사용할 수 있다.