문제
다음 SQL 중 구문 오류가 발생하는 것은?
① SELECT DEPT, COUNT() FROM EMP GROUP BY DEPT HAVING COUNT() > 2; ② SELECT DEPT, COUNT() FROM EMP WHERE COUNT() > 2 GROUP BY DEPT; ③ SELECT DEPT, AVG(SAL) FROM EMP GROUP BY DEPT HAVING AVG(SAL) > 2000; ④ SELECT COUNT(DISTINCT DEPT) FROM EMP GROUP BY SAL HAVING COUNT(SAL) > 0;
정답
2번
해설
② WHERE 절에서 집계함수 COUNT()를 사용할 수 없어 구문 오류가 발생합니다. 집계함수는 WHERE 절이 아닌 HAVING 절에서 사용해야 합니다. ① DEPT가 GROUP BY에 포함되고 COUNT()는 집계함수이므로 정상적으로 실행됩니다. ③ DEPT가 GROUP BY에 포함되고 AVG(SAL)은 집계함수이므로 정상적으로 실행됩니다. ④ COUNT(DISTINCT DEPT)는 집계함수이고 HAVING 절에서 집계함수를 사용하므로 정상적으로 실행됩니다.