Oracle 기준으로 다음 SQL의 실행 결과로 옳은 것은?[운송]운송… | [SQLD] SQL 개발자 기출유형 모의고사 8회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 8회
Oracle 기준으로 다음 SQL의 실행 결과로 옳은 것은?[운송]
| 운송번호 | 도착일 | 실중량 | 예상중량 |
|---|---|---|---|
| T1 | 2026-05-02 | 120 | 120 |
| T2 | (null) | (null) | 80 |
| T3 | 2026-05-03 | 95 | 100 |
| T4 | (null) | (null) | (null) |
SELECT 운송번호,
NVL2(도착일, '완료', '운송중') AS 상태,
COALESCE(실중량, 예상중량, 0) AS 중량,
NULLIF(실중량, 예상중량) AS 비교
FROM 운송
ORDER BY 운송번호;1
| 운송번호 | 상태 | 중량 | 비교 |
|---|---|---|---|
| T1 | 완료 | 120 | (null) |
| T2 | 운송중 | 80 | (null) |
| T3 | 완료 | 95 | 100 |
| T4 | 운송중 | 0 | (null) |
2
| 운송번호 | 상태 | 중량 | 비교 |
|---|---|---|---|
| T1 | 완료 | 120 | (null) |
| T2 | 운송중 | 0 | (null) |
| T3 | 완료 | 95 | 95 |
| T4 | 운송중 | 0 | (null) |
3
| 운송번호 | 상태 | 중량 | 비교 |
|---|---|---|---|
| T1 | 완료 | 120 | (null) |
| T2 | 운송중 | 80 | (null) |
| T3 | 완료 | 95 | 95 |
| T4 | 운송중 | 0 | (null) |
4
| 운송번호 | 상태 | 중량 | 비교 |
|---|---|---|---|
| T1 | 완료 | 120 | 120 |
| T2 | 운송중 | 80 | (null) |
| T3 | 완료 | 95 | (null) |
| T4 | 운송중 | 0 | (null) |
해설
NULLIF(a, b)는 두 값이 같으면 NULL, 다르면 첫 번째 인수를 돌려주므로 T1 은 NULL, T3 은 95 다.NVL2 는 도착일이 있으면 완료, 없으면 운송중을 고르고, COALESCE 는 왼쪽부터 처음 NULL 이 아닌 값을 골라 T2=80, T4=0 이 된다.
- 값이 다를 때 두 번째 인수 100 을 돌려주지는 않는다.
- 같은 값이면 그 값이 아니라 NULL 이 되고, 다른 값이면 NULL 이 아니다.
- T2 는 예상중량 80 이 먼저 NULL 이 아니므로 0 까지 가지 않는다.
오류나 개정된 내용이 보이면 알려주세요