[회원] 테이블에 다음 SQL 을 실행했을 때 조회되는 결과는?[회원]… | [SQLD] SQL 개발자 기출유형 모의고사 2회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 2회
[회원] 테이블에 다음 SQL 을 실행했을 때 조회되는 결과는?[회원]
| 회원번호 | 등급 | 포인트 |
|---|---|---|
| 1 | VIP | 300 |
| 2 | 일반 | 450 |
| 3 | (null) | 200 |
| 4 | 일반 | (null) |
| 5 | (null) | 800 |
| 6 | VIP | 100 |
| 7 | 일반 | 500 |
| 8 | (null) | (null) |
SELECT 회원번호, 등급 FROM 회원 WHERE COALESCE(등급, '일반') <> 'VIP' AND 포인트 < 500 ORDER BY 회원번호;
1
| 회원번호 | 등급 |
|---|---|
| 2 | 일반 |
| 3 | (null) |
2
| 회원번호 | 등급 |
|---|---|
| 2 | 일반 |
| 3 | 일반 |
3
| 회원번호 | 등급 |
|---|---|
| 2 | 일반 |
| 3 | (null) |
| 4 | 일반 |
| 8 | (null) |
4
| 회원번호 | 등급 |
|---|---|
| 2 | 일반 |
해설
등급이 NULL 인 행은 COALESCE 로 '일반'이 되어 첫 조건이 참이지만, 포인트가 NULL 이면 UNKNOWN 이라 AND 결과가 참이 되지 않아 회원 2·3 만 남는다.
회원 4·8 은 포인트 비교가 UNKNOWN 이라 빠지고 회원 5·7 은 포인트가 500 이상이며, SELECT 의 등급은 바꾸지 않았으므로 회원 3 의 등급은 NULL 그대로 출력된다.
- 회원 3 의 등급을 '일반'으로 보인 표는 WHERE 의 COALESCE 가 출력값까지 바꾼다고 본 것이다.
- 회원 2 만 남긴 표는 등급 NULL 행을 COALESCE 없이 비교한 결과다.
- 회원 4·8 까지 넣은 표는 NULL 과의 비교를 참으로 계산한 것이다.
오류나 개정된 내용이 보이면 알려주세요