SQLDSQL 활용서브쿼리난이도 2MCQ

SQLD 서브쿼리 기출문제 #586

문제

다음 상관 서브쿼리를 일반 조인으로 올바르게 변환한 것은?

SQL
SELECT A.사번, A.이름 FROM 직원 A WHERE EXISTS (SELECT 1 FROM 급여 B WHERE A.사번 = B.사번 AND B.급여액 > 5000000);

① SELECT A.사번, A.이름 FROM 직원 A, 급여 B WHERE A.사번 = B.사번 AND B.급여액 > 5000000 ② SELECT DISTINCT A.사번, A.이름 FROM 직원 A INNER JOIN 급여 B ON A.사번 = B.사번 WHERE B.급여액 > 5000000 ③ SELECT A.사번, A.이름 FROM 직원 A LEFT JOIN 급여 B ON A.사번 = B.사번 WHERE B.급여액 > 5000000 ④ SELECT A.사번, A.이름 FROM 직원 A WHERE A.사번 IN (SELECT B.사번 FROM 급여 B WHERE B.급여액 > 5000000)

정답

2

해설

EXISTS는 존재 여부만 확인하므로 조인 시 중복 제거를 위해 DISTINCT가 필요합니다. 한 직원이 여러 급여 레코드를 가질 경우 중복 발생 가능성이 있기 때문입니다. ① DISTINCT 없이 중복 발생 가능합니다. ③ LEFT JOIN은 조건을 만족하지 않는 직원도 포함하여 부적절합니다. ④ 여전히 서브쿼리 형태로 조인 변환이 아닙니다.

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

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

[SQLD] 서브쿼리 SQL 활용 기출 #586 | sqldpass