문제
다음 SQL에서 오류가 발생하는 이유로 가장 적절한 것은?
SQLSELECT DEPT, COUNT(*) FROM EMP WHERE COUNT(*) > 2 GROUP BY DEPT;
① WHERE 절에 집계함수를 사용했기 때문 ② COUNT(*)는 SELECT 절에만 사용할 수 있기 때문 ③ GROUP BY 절이 WHERE 절보다 뒤에 위치했기 때문 ④ DEPT가 GROUP BY 절에 포함되어 있기 때문
정답
1번
해설
① WHERE 절에는 집계함수를 사용할 수 없다. 집계함수를 이용한 조건은 HAVING 절에서 사용해야 한다. WHERE는 그룹화 이전의 개별 행을 필터링하는 반면, HAVING은 그룹화 이후의 그룹을 필터링한다. ② COUNT(*)는 HAVING 절에서도 사용 가능하다. ③ GROUP BY의 위치는 올바르다(WHERE 다음에 GROUP BY가 오는 것이 정상). ④ DEPT는 SELECT 절에 있으므로 GROUP BY에 포함되어야 하며, 이는 올바른 구문이다.