다음 SQL의 실행 결과로 옳은 것은?[입고]입고번호검수상태수량I01정… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 8회
다음 SQL의 실행 결과로 옳은 것은?[입고]
| 입고번호 | 검수상태 | 수량 |
|---|---|---|
| I01 | 정상 | 30 |
| I02 | 불량 | 60 |
| I03 | (null) | 20 |
| I04 | 정상 | 70 |
| I05 | 보류 | 10 |
| I06 | (null) | 80 |
| I07 | 불량 | 40 |
SELECT 입고번호
FROM 입고
WHERE 검수상태 <> '불량'
OR 검수상태 = NULL
OR 수량 > 50
ORDER BY 입고번호;1
| 입고번호 |
|---|
| I01 |
| I04 |
| I05 |
2
| 입고번호 |
|---|
| I01 |
| I02 |
| I04 |
| I05 |
3
| 입고번호 |
|---|
| I01 |
| I02 |
| I03 |
| I04 |
| I05 |
| I06 |
4
| 입고번호 |
|---|
| I01 |
| I02 |
| I04 |
| I05 |
| I06 |
해설
= NULL은 어떤 행에서도 UNKNOWN이고 검수상태가 NULL 인 행은 <> 비교도 UNKNOWN 이어서, NULL 행은 수량 > 50 이 참일 때만 남는다.그래서 I06(수량 80)은 남고 I03(수량 20)은 빠지며, 불량인 I02 는 수량 60 덕분에 남고 I07 은 빠져 5행이 된다.
- = NULL 이 참이 되지 않으므로 I03 은 결과에 없다.
- OR 에서는 UNKNOWN 이 있어도 다른 조건이 참이면 행이 남아 I06 이 포함된다.
- 세 번째 조건 수량 > 50 을 빼고 보면 I02·I06 이 빠진 결과가 된다.
오류나 개정된 내용이 보이면 알려주세요