문제
다음 두 SQL의 결과 차이점으로 가장 적절한 것은?
SQL-- SQL 1 SELECT department_id, COUNT(*) as emp_count FROM employees WHERE salary > 50000 GROUP BY department_id; -- SQL 2 SELECT department_id, COUNT(*) as emp_count FROM employees GROUP BY department_id HAVING AVG(salary) > 50000;
① 두 SQL은 항상 동일한 결과를 반환한다 ② SQL 1은 개별 직원의 급여 조건을 먼저 필터링하고, SQL 2는 부서별 평균 급여 조건으로 그룹을 필터링한다 ③ SQL 1은 HAVING 절이 없어서 오류가 발생한다 ④ SQL 2는 WHERE 절이 없어서 모든 직원을 대상으로 하지 않는다
정답
2번
해설
SQL 1은 WHERE 절로 급여가 50000 초과인 직원들만 먼저 필터링한 후 부서별로 그룹화하여 해당 직원 수를 센 것입니다. SQL 2는 모든 직원을 부서별로 그룹화한 후 HAVING 절로 부서 평균 급여가 50000 초과인 그룹만 필터링합니다. 따라서 필터링 기준과 시점이 완전히 다릅니다.