문제
'영업' 부서의 평균 급여보다 더 많은 급여를 받는 직원의 EmpID, Name, Dept, Salary를 조회하는 SQL로 옳은 것은?
① SELECT EmpID, Name, Dept, Salary FROM Employees WHERE Dept='영업' AND Salary > (SELECT AVG(Salary) FROM Employees WHERE Dept='영업'); ② SELECT EmpID, Name, Dept, Salary FROM Employees WHERE Salary > (SELECT AVG(Salary) FROM Employees WHERE Dept='영업'); ③ SELECT EmpID, Name, Dept, Salary FROM Employees WHERE Salary = (SELECT AVG(Salary) FROM Employees WHERE Dept='영업'); ④ SELECT EmpID, Name, Dept, Salary FROM Employees WHERE Dept='영업' OR Salary > (SELECT AVG(Salary) FROM Employees WHERE Dept='영업');
정답
2번
해설
정답: 2. 모든 직원 중 '영업' 부서 평균 급여보다 큰 직원을 조회해야 하므로 부서 조건은 서브쿼리에만 있어야 한다.
오답 풀이
- 1번: 영업 부서 직원으로만 제한되어 전체 직원 조회 조건과 다르다.
- 2번: 영업 부서 평균 급여보다 큰 모든 직원을 조회한다.
- 3번: 평균과 같은 급여를 찾는 조건이다.
- 4번: OR 조건으로 불필요한 영업 부서 직원까지 포함될 수 있다.
보충 개념 서브쿼리는 한 질의의 결과를 다른 질의의 조건으로 사용할 때 활용된다.