Oracle 기준으로 다음 SQL을 실행한 결과로 옳은 것은?[회원]회… | [SQLD] SQL 개발자 기출유형 모의고사 3회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 3회
Oracle 기준으로 다음 SQL을 실행한 결과로 옳은 것은?[회원]
| 회원번호 | 등급 | 가입일 |
|---|---|---|
| M01 | G | 2026-01-05 |
| M02 | S | 2026-01-09 |
| M03 | (null) | 2026-02-11 |
| M04 | G | 2026-02-20 |
| M05 | B | 2026-03-02 |
SELECT 회원번호,
DECODE(등급, NULL, 'N', 'G', 'Y', 'X') AS D,
CASE 등급 WHEN NULL THEN 'N'
WHEN 'G' THEN 'Y'
ELSE 'X' END AS C
FROM 회원
ORDER BY 회원번호;1
| 회원번호 | D | C |
|---|---|---|
| M01 | Y | Y |
| M02 | X | X |
| M03 | N | X |
| M04 | Y | Y |
| M05 | X | X |
2
| 회원번호 | D | C |
|---|---|---|
| M01 | Y | Y |
| M02 | X | X |
| M03 | X | X |
| M04 | Y | Y |
| M05 | X | X |
3
| 회원번호 | D | C |
|---|---|---|
| M01 | Y | Y |
| M02 | X | X |
| M03 | X | N |
| M04 | Y | Y |
| M05 | X | X |
4
| 회원번호 | D | C |
|---|---|---|
| M01 | Y | Y |
| M02 | X | X |
| M03 | N | N |
| M04 | Y | Y |
| M05 | X | X |
해설
DECODE 는 비교 대상과 검색값이 모두 NULL 이면 같다고 보므로 M03 의 D 는 'N' 이 되지만, 단순 CASE 의
WHEN NULL은 등급 = NULL 비교라 결과가 UNKNOWN 이어서 ELSE 의 'X' 가 나온다.나머지 회원은 G 면 'Y', S·B 면 'X' 로 두 열이 같다.
- CASE 도 NULL 을 잡는다고 본 결과로 M03 의 C 가 틀렸다.
- DECODE 도 NULL 을 못 잡는다고 본 결과로 M03 의 D 가 틀렸다.
- 두 함수의 NULL 처리를 서로 뒤바꾼 결과다.
오류나 개정된 내용이 보이면 알려주세요