SQLDSQL 활용서브쿼리 오류난이도 3MCQ

SQLD 서브쿼리 오류 기출문제 #3786

문제

다음 SQL에서 오류가 발생하는 원인으로 가장 적절한 것은?

SQL
SELECT ID, SUM(SAL) FROM EMP WHERE ID = (SELECT ID FROM A WHERE 조건 = 'Y') GROUP BY ID HAVING SUM(SAL) > 5000;

<조건> 서브쿼리 (SELECT ID FROM A WHERE 조건 = 'Y')는 여러 행을 반환할 수 있다.

① SELECT 절에서 SUM(SAL)을 사용했기 때문이다. ② = 연산자에 사용된 서브쿼리가 여러 행을 반환할 수 있기 때문이다. ③ GROUP BY ID를 사용했기 때문이다. ④ HAVING SUM(SAL) > 5000을 사용했기 때문이다.

정답

2

해설

정답: 2. = 연산자는 단일 값을 기대하므로 서브쿼리가 여러 행을 반환하면 단일 행 서브쿼리 오류가 발생할 수 있다.

오답 풀이

  • 1번: GROUP BY ID와 함께 SUM(SAL)을 사용하는 것은 가능하다.
  • 2번: 다중 행 서브쿼리를 =로 비교하는 것이 오류 원인이다.
  • 3번: GROUP BY ID 자체는 오류가 아니다.
  • 4번: HAVING 절에서 집계 함수 조건을 사용하는 것은 가능하다.

보충 개념 서브쿼리 결과가 여러 행이면 = 대신 IN, ANY, ALL 등을 사용해야 한다. WHERE 절에는 집계 함수를 직접 사용할 수 없다는 별도 유형도 자주 출제된다.

SQLD 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[SQLD] 서브쿼리 오류 SQL 활용 기출 #3786 | 문어CBT