문제
다음 중 SQL에서 특정 조건에 맞는 레코드의 개수를 구하는 집계 함수와 그룹화 절을 함께 사용할 때 발생할 수 있는 오류에 대한 설명으로 가장 적절한 것은?
① COUNT(*) 함수는 GROUP BY 절 없이 사용할 수 없다 ② SELECT 절에 집계 함수와 일반 컬럼을 함께 사용할 때는 반드시 GROUP BY에 일반 컬럼을 포함해야 한다 ③ HAVING 절은 WHERE 절보다 먼저 실행되므로 집계 함수 조건을 먼저 처리한다 ④ GROUP BY 절에 명시되지 않은 컬럼은 SELECT 절에서 MAX() 함수로만 조회할 수 있다
정답
2번
해설
② 정답: SQL에서 SELECT 절에 집계 함수와 일반 컬럼이 함께 사용될 때, 일반 컬럼은 반드시 GROUP BY 절에 포함되어야 한다. 그렇지 않으면 문법 오류가 발생한다. ① COUNT(*)는 GROUP BY 없이도 전체 레코드 수를 반환할 수 있다. ③ HAVING 절은 GROUP BY 이후에 실행되며, WHERE 절이 먼저 실행된다. ④ GROUP BY에 명시되지 않은 컬럼은 집계 함수로 감싸야 하지만 MAX()만 사용할 수 있는 것은 아니다.