학습용 기출·복원자료 분류 확인SQLD · 2024년 53회 SQL 기본 및 활용 · 26번
다음 SQL에서 오류가 발생하는 절과 그 이유로 옳은 것은?
SELECT DEPTNO, ROUND(AVG(SAL), 2)
FROM EMP
WHERE AVG(SAL) >= 1800
GROUP BY DEPTNO;
1
SELECT 절: AVG 함수는 SELECT 절에서 사용할 수 없다.
오답 이유집계 함수는 그룹별 결과를 만들기 위해 SELECT 절에서 사용할 수 있다. 따라서 1번 보기 ‘SELECT 절: AVG 함수는 SELECT 절에서 사용할 수 없다.’의 적용 여부를 문제 조건과 대조해야 한다.
2
FROM 절: 테이블 별칭이 없으면 오류가 발생한다.
오답 이유테이블 별칭은 필수가 아니므로 FROM EMP 자체는 올바르다. 따라서 2번 보기 ‘FROM 절: 테이블 별칭이 없으면 오류가 발생한다.’의 적용 여부를 문제 조건과 대조해야 한다.
3
WHERE 절: 그룹화 전에 집계 함수를 조건으로 사용할 수 없다.
정답 근거WHERE는 그룹화 전에 개별 행을 거르므로 AVG 같은 집계 함수를 사용할 수 없다. 평균 조건은 HAVING AVG(SAL) >= 1800으로 작성해야 한다. 따라서 3번 보기 ‘WHERE 절: 그룹화 전에 집계 함수를 조건으로 사용할 수 없다.’의 적용 여부를 문제 조건과 대조해야 한다.
4
GROUP BY 절: DEPTNO는 그룹화할 수 없다.
오답 이유비집계 출력 열 DEPTNO를 GROUP BY에 지정한 것은 올바르다. 따라서 4번 보기 ‘GROUP BY 절: DEPTNO는 그룹화할 수 없다.’의 적용 여부를 문제 조건과 대조해야 한다.
ANSWER & EXPLANATION
정답 3번
핵심 판단은 3번 ‘WHERE 절: 그룹화 전에 집계 함수를 조건으로 사용할 수 없다.’입니다. 오류 원인은 WHERE AVG(SAL) >= 1800이다. WHERE는 개별 행 조건, HAVING은 GROUP BY 뒤의 집계 결과 조건에 사용한다.