출고 테이블의 품번에는 미확인 출고로 NULL 이 들어 있다. 출고 이… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 8회
출고 테이블의 품번에는 미확인 출고로 NULL 이 들어 있다. 출고 이력이 없는 품목을 아래 결과처럼 조회하려 할 때 ㉠에 들어갈 조건으로 옳은 것은?

[품목]

품번품명
P1팔레트
P2랩필름
P3박스
P4테이프

[출고]

출고번호품번수량
1P110
2P35
3(null)7
4P13
SELECT P.품번, P.품명
  FROM 품목 P
 WHERE ( ㉠ )
 ORDER BY P.품번;
품번품명
P2랩필름
P4테이프
1
P.품번 <> ALL (SELECT O.품번 FROM 출고 O)
2
NOT EXISTS (SELECT 1 FROM 출고 O WHERE O.품번 = P.품번)
3
0 = (SELECT COUNT(O.품번) FROM 출고 O)
4
P.품번 NOT IN (SELECT O.품번 FROM 출고 O)
해설

상관 조건으로 같은 품번의 출고 행 존재 여부만 보는 NOT EXISTS 는 NULL 품번 행과 무관하게 출고 이력이 없는 P2·P4 를 돌려준다.

NOT IN 은 목록의 모든 값과 같지 않음을 AND 로 묶는데, NULL 과의 비교가 UNKNOWN 이라 어떤 품번도 참이 되지 못한다.

  • NOT IN 은 서브쿼리에 NULL 이 있어 결과가 0행이다.
  • <> ALL 은 NOT IN 과 같은 뜻이라 역시 0행이다.
  • 상관 조건 없는 COUNT 는 품목마다 전체 출고 품번 수 3을 돌려줘 0행이다.

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

이어서 풀어보기

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