문제
강좌번호가 100, 101인 과목을 동시에 듣는 학번을 구하는 SQL로 알맞은 것은?
① SELECT 학번 FROM 수강 WHERE 강좌번호 = 100 AND 강좌번호 = 101 ② SELECT 학번 FROM 수강 WHERE 강좌번호 = 100 INTERSECT SELECT 학번 FROM 수강 WHERE 강좌번호 = 101 ③ SELECT 학번 FROM 수강 WHERE 강좌번호 IN (100, 101) ④ SELECT 학번 FROM 수강 WHERE 강좌번호 = 100 OR 101
정답
2번
해설
정답: 2. 100번 강좌를 듣는 학번 집합과 101번 강좌를 듣는 학번 집합의 교집합을 구해야 하므로 INTERSECT가 적절하다.
오답 풀이
- 1번: 한 행의 강좌번호가 동시에 100이면서 101일 수 없다.
- 2번: 두 강좌를 모두 듣는 학번을 교집합으로 구한다.
- 3번: 둘 중 하나만 듣는 학번도 포함된다.
- 4번:
OR 101은 올바른 조건식이 아니다.
보충 개념 동시에 만족해야 하는 조건이 서로 다른 행에 나뉘어 존재할 때는 INTERSECT, GROUP BY HAVING COUNT, 셀프 조인 등을 사용할 수 있다.