다음 SQL의 실행 결과로 옳은 것은?[회원]회원번호휴대폰이메일포인트1… | [SQLD] SQL 개발자 기출유형 모의고사 9회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 9회
다음 SQL의 실행 결과로 옳은 것은?[회원]
| 회원번호 | 휴대폰 | 이메일 | 포인트 |
|---|---|---|---|
| 1 | 010-11 | kim@a.kr | 3500 |
| 2 | (null) | lee@a.kr | 1200 |
| 3 | (null) | (null) | (null) |
| 4 | 010-44 | (null) | 800 |
SELECT 회원번호,
COALESCE(휴대폰, 이메일, '미등록') AS 연락처,
CASE WHEN 포인트 >= 1000 THEN 'VIP'
WHEN 포인트 >= 3000 THEN 'VVIP'
ELSE '일반' END AS 등급
FROM 회원
ORDER BY 회원번호;1
| 회원번호 | 연락처 | 등급 |
|---|---|---|
| 1 | 010-11 | VIP |
| 2 | 미등록 | VIP |
| 3 | 미등록 | 일반 |
| 4 | 010-44 | 일반 |
2
| 회원번호 | 연락처 | 등급 |
|---|---|---|
| 1 | 010-11 | VVIP |
| 2 | lee@a.kr | VIP |
| 3 | 미등록 | 일반 |
| 4 | 010-44 | 일반 |
3
| 회원번호 | 연락처 | 등급 |
|---|---|---|
| 1 | 010-11 | VIP |
| 2 | lee@a.kr | VIP |
| 3 | 미등록 | 일반 |
| 4 | 010-44 | 일반 |
4
| 회원번호 | 연락처 | 등급 |
|---|---|---|
| 1 | 010-11 | VIP |
| 2 | lee@a.kr | VIP |
| 3 | 미등록 | (null) |
| 4 | 010-44 | 일반 |
해설
COALESCE 는 왼쪽부터 처음 만난 NOT NULL 값을 돌려주므로 2는 이메일, 3은 '미등록'이 되고, 검색 CASE 는 처음 참인 WHEN 에서 멈춰 3500 포인트인 1도 VIP 가 된다.
포인트가 NULL 인 3은 두 비교가 모두 UNKNOWN 이라 ELSE 의 '일반'을 받는다.
- 더 높은 조건을 찾아 VVIP 를 주지 않으며, 앞선 WHEN 이 먼저 참이 된다.
- ELSE 가 있으므로 NULL 비교 행도 NULL 이 아니라 '일반'이다.
- 휴대폰이 NULL 이면 다음 인수인 이메일을 보므로 2는 '미등록'이 아니다.
오류나 개정된 내용이 보이면 알려주세요