다음 SQL의 실행 결과로 옳은 것은?[수강생]번호이름레벨점수1하늘중급… | [SQLD] SQL 개발자 기출유형 모의고사 7회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 7회
다음 SQL의 실행 결과로 옳은 것은?[수강생]
| 번호 | 이름 | 레벨 | 점수 |
|---|---|---|---|
| 1 | 하늘 | 중급 | 80 |
| 2 | 보람 | 고급 | 70 |
| 3 | 구름 | 초급 | 95 |
| 4 | 별빛 | 고급 | 90 |
| 5 | 노을 | (null) | 85 |
| 6 | 새벽 | 중급 | 80 |
SELECT 이름, 점수
FROM 수강생
ORDER BY CASE 레벨 WHEN '고급' THEN 1
WHEN '중급' THEN 2
ELSE 3 END,
점수 DESC, 이름;1
| 이름 | 점수 |
|---|---|
| 별빛 | 90 |
| 보람 | 70 |
| 새벽 | 80 |
| 하늘 | 80 |
| 구름 | 95 |
| 노을 | 85 |
2
| 이름 | 점수 |
|---|---|
| 구름 | 95 |
| 별빛 | 90 |
| 노을 | 85 |
| 새벽 | 80 |
| 하늘 | 80 |
| 보람 | 70 |
3
| 이름 | 점수 |
|---|---|
| 별빛 | 90 |
| 보람 | 70 |
| 하늘 | 80 |
| 새벽 | 80 |
| 구름 | 95 |
| 노을 | 85 |
4
| 이름 | 점수 |
|---|---|
| 보람 | 70 |
| 별빛 | 90 |
| 새벽 | 80 |
| 하늘 | 80 |
| 노을 | 85 |
| 구름 | 95 |
해설
첫 정렬 키가 CASE 식이라 고급(1), 중급(2), 나머지(3) 순으로 묶이고, 레벨이 NULL 인 노을도 ELSE 로 3 이 되어 초급 구름과 함께 맨 뒤에 온다.
같은 묶음 안에서는 점수 DESC, 점수가 같은 새벽·하늘은 이름 오름차순으로 정렬되며 SELECT 목록에 없는 레벨도 정렬 키로 쓸 수 있다.
- 점수를 오름차순으로 보면 보람이 별빛보다 앞서게 된다.
- 동점에서 이름 오름차순이면 새벽이 하늘보다 먼저 온다.
- CASE 키를 무시하고 점수만 보면 구름이 맨 앞에 오게 된다.
오류나 개정된 내용이 보이면 알려주세요