Oracle 에서 다음 SQL을 실행했을 때 결과의 상품명을 출력 순서… | [SQLD] SQL 개발자 기출유형 모의고사 1회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 1회
Oracle 에서 다음 SQL을 실행했을 때 결과의 상품명을 출력 순서대로 나열한 것은? (상품판매 테이블은 표의 순서대로 입력되었다)[상품판매]
| 상품명 | 판매량 |
|---|---|
| 노트북 | 120 |
| 스피커 | 180 |
| 키보드 | (null) |
| 마우스 | 300 |
| 책상 | 90 |
| 모니터 | 250 |
SELECT 상품명, 판매량
FROM (SELECT 상품명, 판매량
FROM 상품판매
ORDER BY 판매량 DESC, 상품명)
WHERE ROWNUM <= 3;1
노트북, 스피커, 키보드
2
책상, 노트북, 스피커
3
마우스, 모니터, 스피커
4
키보드, 마우스, 모니터
해설
인라인 뷰에서 먼저 정렬한 뒤 ROWNUM을 매기므로 정렬 순서의 앞 3행이 나오는데, Oracle 은 NULL 을 최댓값으로 취급해 DESC 정렬 맨 앞에 둔다.
그래서 판매량이 NULL 인 키보드가 첫 행이 되고 마우스(300), 모니터(250)가 뒤따른다.
- 마우스부터 시작하는 것은 DESC 에서도 NULL 이 뒤로 간다고 본 것이다.
- 입력 순서 앞 3건이 나오는 것은 정렬 전에 ROWNUM 을 매기는 경우다.
- 책상부터 시작하는 것은 오름차순 정렬로 잘못 읽은 것이다.
오류나 개정된 내용이 보이면 알려주세요