문제
다음 SQL 문장에서 오류가 발생하는 원인으로 가장 적절한 것은?
① SELECT 절에 일반 컬럼(DEPTNO)과 집계 함수(SUM)를 함께 사용했기 때문이다. ② SUM 함수의 인자로 단일 컬럼(SAL)만 지정해서 집계 대상이 모호하기 때문이다. ③ GROUP BY 절에 집계 함수(SUM)를 사용했기 때문이다. ④ ORDER BY 절 없이 집계 함수를 사용하면 정렬 기준이 없어 오류가 나기 때문이다.
정답
3번
해설
정답: ③
해설 이 SQL은 GROUP BY 절에 SUM(SAL)과 같은 집계 함수를 사용했기 때문에 오류가 발생한다.
GROUP BY 절은 집계하기 전에 데이터를 어떤 기준으로 묶을지 지정하는 절이다. 따라서 DEPTNO처럼 그룹화 기준이 되는 컬럼이나 일반 표현식은 사용할 수 있지만, SUM(SAL)처럼 그룹이 만들어진 뒤 계산되는 집계 함수는 GROUP BY 절에 직접 사용할 수 없다.
따라서 오류 원인은 GROUP BY 절에 집계 함수를 사용한 것이므로 정답은 ③이다.
오답 풀이
① 일반 컬럼과 집계 함수를 함께 사용하는 것 자체가 항상 오류는 아니다. 예를 들어 GROUP BY DEPTNO처럼 일반 컬럼이 그룹화 기준에 포함되어 있으면 정상적으로 사용할 수 있다.
② SUM(SAL)처럼 SUM 함수의 인자로 단일 컬럼을 지정하는 것은 정상적인 사용법이다.
④ ORDER BY 절은 집계 함수 사용의 필수 조건이 아니다. 정렬 없이도 집계 함수는 사용할 수 있다.
보충 개념 집계 결과에 조건을 걸고 싶을 때는 WHERE 절이 아니라 HAVING 절을 사용한다.