출고 테이블의 품번에는 미확인 출고로 NULL 이 들어 있다. 출고 이… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 8회
출고 테이블의 품번에는 미확인 출고로 NULL 이 들어 있다. 출고 이력이 없는 품목을 아래 결과처럼 조회하려 할 때 ㉠에 들어갈 조건으로 옳은 것은?[품목]
| 품번 | 품명 |
|---|---|
| P1 | 팔레트 |
| P2 | 랩필름 |
| P3 | 박스 |
| P4 | 테이프 |
[출고]
| 출고번호 | 품번 | 수량 |
|---|---|---|
| 1 | P1 | 10 |
| 2 | P3 | 5 |
| 3 | (null) | 7 |
| 4 | P1 | 3 |
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행이다.
오류나 개정된 내용이 보이면 알려주세요