다음 SQL의 실행 결과로 옳은 것은?[승객]승객번호마일리지P11200… | [SQLD] SQL 개발자 기출유형 모의고사 4회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 4회
다음 SQL의 실행 결과로 옳은 것은?[승객]
| 승객번호 | 마일리지 |
|---|---|
| P1 | 120000 |
| P2 | 50000 |
| P3 | (null) |
| P4 | 80000 |
| P5 | 30000 |
SELECT 승객번호,
CASE WHEN 마일리지 >= 50000 THEN '골드'
WHEN 마일리지 >= 100000 THEN '플래티넘'
WHEN 마일리지 < 50000 THEN '일반'
ELSE '미가입' END AS 등급
FROM 승객
ORDER BY 승객번호;1
| 승객번호 | 등급 |
|---|---|
| P1 | 골드 |
| P2 | 골드 |
| P3 | 일반 |
| P4 | 골드 |
| P5 | 일반 |
2
| 승객번호 | 등급 |
|---|---|
| P1 | 골드 |
| P2 | 골드 |
| P3 | 미가입 |
| P4 | 골드 |
| P5 | 일반 |
3
| 승객번호 | 등급 |
|---|---|
| P1 | 플래티넘 |
| P2 | 골드 |
| P3 | 미가입 |
| P4 | 골드 |
| P5 | 일반 |
4
| 승객번호 | 등급 |
|---|---|
| P1 | 골드 |
| P2 | 일반 |
| P3 | 미가입 |
| P4 | 골드 |
| P5 | 일반 |
해설
검색형 CASE는 WHEN 을 위에서부터 평가해 처음 참이 되는 조건의 값을 돌려주므로 120000 인 P1 도 첫 조건(50000 이상)에 걸려 골드가 된다.
마일리지가 NULL 인 P3 은 모든 비교가 UNKNOWN 이라 ELSE 의 미가입이 된다.
- P1 을 플래티넘으로 본 표는 가장 잘 맞는 조건을 고른다고 오해했다.
- P3 을 일반으로 본 표는 NULL < 50000 을 참으로 보았다.
- P2 를 일반으로 본 표는 50000 이 50000 이상 조건을 만족함을 놓쳤다.
오류나 개정된 내용이 보이면 알려주세요