처방 이력이 없는 환자를 [결과]처럼 조회하려고 한다. ㉠에 들어갈 구… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 6회
처방 이력이 없는 환자를 [결과]처럼 조회하려고 한다. ㉠에 들어갈 구문으로 옳은 것은?

[환자]

환자번호환자명
1강민
2오라
3하율
4표지안

[처방]

처방번호환자번호처방일
112026-03-02
212026-03-03
332026-03-03
4(null)2026-03-05
SELECT P.환자명
  FROM 환자 P
 WHERE P.환자번호 NOT IN (SELECT 환자번호
                           FROM 처방
                          ( ㉠ ))
 ORDER BY P.환자명;

[결과]

환자명
오라
표지안
1
GROUP BY 환자번호
2
WHERE 환자번호 IS NOT NULL
3
WHERE 처방번호 > 0
4
WHERE 처방일 IS NULL
해설

서브쿼리 결과에 NULL 이 섞이면 NOT IN 은 NULL 과의 비교가 UNKNOWN 이 되어 한 행도 남지 않으므로, IS NOT NULL 로 NULL 을 먼저 걸러야 한다.

NULL 을 뺀 서브쿼리 결과는 1, 1, 3 이고, 여기에 없는 오라와 표지안만 조회된다.

  • 처방일이 NULL 인 행은 없어 서브쿼리가 비므로 네 명 모두 조회된다.
  • GROUP BY 는 NULL 도 한 그룹으로 남겨 결과가 0행이 된다.
  • 처방번호 조건은 환자번호 NULL 행을 그대로 남겨 0행이 된다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 6회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기