Oracle 기준으로 변경좌석이 있으면 변경좌석, 없으면 지정좌석, 둘… | [SQLD] SQL 개발자 기출유형 모의고사 4회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 4회
Oracle 기준으로 변경좌석이 있으면 변경좌석, 없으면 지정좌석, 둘 다 없으면 '미배정'을 보여 주어 다음 결과를 얻으려 한다. ㉠에 들어갈 식으로 옳은 것은?[탑승]
| 탑승권번호 | 지정좌석 | 변경좌석 |
|---|---|---|
| B01 | 12A | (null) |
| B02 | 14C | 3F |
| B03 | (null) | (null) |
| B04 | (null) | 22B |
| B05 | 30A | 30A |
SELECT 탑승권번호,
( ㉠ ) AS 최종좌석
FROM 탑승
ORDER BY 탑승권번호;| 탑승권번호 | 최종좌석 |
|---|---|
| B01 | 12A |
| B02 | 3F |
| B03 | 미배정 |
| B04 | 22B |
| B05 | 30A |
1
NVL2(변경좌석, 지정좌석, '미배정')
2
COALESCE(변경좌석, 지정좌석, '미배정')
3
NVL(NVL(지정좌석, 변경좌석), '미배정')
4
NULLIF(변경좌석, 지정좌석)
해설
COALESCE 는 인자를 왼쪽부터 보아 처음 나온 NULL 이 아닌 값을 돌려주므로 변경좌석, 지정좌석, 미배정 순서로 나열해야 결과표와 맞는다.
B02·B04 는 변경좌석, B01·B05 는 지정좌석, 둘 다 없는 B03 은 미배정이 된다.
- 지정좌석을 먼저 보는 NVL 중첩은 B02 를 14C 로 낸다.
- NULLIF 는 두 값이 같으면 NULL 을 돌려줄 뿐 대체값을 고르지 않는다.
- NVL2 는 변경좌석이 있을 때 지정좌석을 내므로 B02 가 14C 가 된다.
오류나 개정된 내용이 보이면 알려주세요