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 을 매기는 경우다.
  • 책상부터 시작하는 것은 오름차순 정렬로 잘못 읽은 것이다.

오류나 개정된 내용이 보이면 알려주세요

이어서 풀어보기

[SQLD] SQL 개발자 기출유형 모의고사 1회 50문항 이어서 보기문제·정답·해설을 한 페이지에서 이어서 볼 수 있어요SQLD SQL 개발자 실전 모의고사 암기장 전체 보기