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 를 무시한 것이다.
오류나 개정된 내용이 보이면 알려주세요