Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[진료]진… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지

1[SQLD] SQL 개발자 기출유형 모의고사 6회
Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?

[진료]

진료번호환자명진료비
1강민30000
2오라52000
3하율18000
4표지안41000
5남궁솔30000
6채아9000
SELECT ROWNUM AS RN, 환자명, 진료비
  FROM (SELECT 환자명, 진료비
          FROM 진료
         ORDER BY 진료비 DESC, 진료번호)
 WHERE ROWNUM <= 3;
1
RN환자명진료비
1오라52000
2강민30000
3하율18000
2
RN환자명진료비
1채아9000
2하율18000
3강민30000
3
RN환자명진료비
1오라52000
2표지안41000
3강민30000
4남궁솔30000
4
RN환자명진료비
1오라52000
2표지안41000
3강민30000
해설

정렬이 인라인 뷰 안에서 먼저 끝나므로 바깥의 ROWNUM 은 정렬된 순서대로 1, 2, 3 을 붙이고 3행에서 멈춘다.

30000 동점인 강민과 남궁솔은 진료번호 순으로 강민이 앞서므로 강민까지만 포함된다.

  • 강민·하율이 나온 결과는 정렬 전 앞 3행에 ROWNUM 을 매겼다고 본 것이다.
  • 4행 결과는 ROWNUM 이 동점 행까지 포함한다고 오해한 것이다.
  • 진료비가 작은 순 결과는 DESC 를 무시한 것이다.

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

이어서 풀어보기

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