학습용 기출·복원자료 분류 확인SQLD · 2023년 50회 SQL 기본 및 활용 · 11번
학생별 평균 학점이 정확히 3.0인 학생을 조회하는 올바른 구조는?
1
WHERE AVG(학점)=3.0만 사용한다.
오답 이유WHERE는 그룹 집계 전에 행을 필터링하므로 일반 집계 함수 조건을 직접 둘 수 없다. 따라서 1번 보기 ‘WHERE AVG(학점)=3.0만 사용한다.’의 적용 여부를 문제 조건과 대조해야 한다.
2
학생별로 GROUP BY한 뒤 HAVING AVG(학점) = 3.0을 적용한다.
정답 근거AVG는 학생의 여러 수강 행을 집계해야 하므로 학생 식별자로 그룹화한다. 집계 결과 조건은 WHERE가 아니라 HAVING에서 검사한다. 따라서 2번 보기 ‘학생별로 GROUP BY한 뒤 HAVING AVG(학점) = 3.0을 적용한다.’의 적용 여부를 문제 조건과 대조해야 한다.
3
GROUP BY 없이 HAVING 학점=3.0을 사용한다.
오답 이유개별 학점 비교로는 학생별 평균을 계산할 수 없다. 따라서 3번 보기 ‘GROUP BY 없이 HAVING 학점=3.0을 사용한다.’의 적용 여부를 문제 조건과 대조해야 한다.
4
ORDER BY AVG(학점)=3.0만 사용한다.
오답 이유ORDER BY는 정렬 절이며 평균 3.0 학생을 필터링하지 않는다. 따라서 4번 보기 ‘ORDER BY AVG(학점)=3.0만 사용한다.’의 적용 여부를 문제 조건과 대조해야 한다.
ANSWER & EXPLANATION
정답 2번
핵심 판단은 2번 ‘학생별로 GROUP BY한 뒤 HAVING AVG(학점) = 3.0을 적용한다.’입니다. AVG는 학생의 여러 수강 행을 집계해야 하므로 학생 식별자로 그룹화한다. 집계 결과 조건은 WHERE가 아니라 HAVING에서 검사한다.