Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[접수]환… | [SQLD] SQL 개발자 기출유형 모의고사 6회 상세 페이지
1[SQLD] SQL 개발자 기출유형 모의고사 6회
Oracle 기준으로 다음 SQL 의 실행 결과로 옳은 것은?[접수]
| 환자명 | 대기분 |
|---|---|
| 강민 | 30 |
| 오라 | (null) |
| 하율 | 30 |
| 표지안 | 20 |
| 남궁솔 | 10 |
SELECT 환자명, 대기분,
RANK() OVER (ORDER BY 대기분 DESC) AS RK,
DENSE_RANK() OVER (ORDER BY 대기분 DESC) AS DRK
FROM 접수
ORDER BY RK, 환자명;1
| 환자명 | 대기분 | RK | DRK |
|---|---|---|---|
| 오라 | (null) | 1 | 1 |
| 강민 | 30 | 2 | 2 |
| 하율 | 30 | 3 | 2 |
| 표지안 | 20 | 4 | 3 |
| 남궁솔 | 10 | 5 | 4 |
2
| 환자명 | 대기분 | RK | DRK |
|---|---|---|---|
| 오라 | (null) | 1 | 1 |
| 강민 | 30 | 2 | 2 |
| 하율 | 30 | 2 | 2 |
| 표지안 | 20 | 3 | 3 |
| 남궁솔 | 10 | 4 | 4 |
3
| 환자명 | 대기분 | RK | DRK |
|---|---|---|---|
| 오라 | (null) | 1 | 1 |
| 강민 | 30 | 2 | 2 |
| 하율 | 30 | 2 | 2 |
| 표지안 | 20 | 4 | 3 |
| 남궁솔 | 10 | 5 | 4 |
4
| 환자명 | 대기분 | RK | DRK |
|---|---|---|---|
| 강민 | 30 | 1 | 1 |
| 하율 | 30 | 1 | 1 |
| 표지안 | 20 | 3 | 2 |
| 남궁솔 | 10 | 4 | 3 |
| 오라 | (null) | 5 | 4 |
해설
Oracle 은 정렬 시 NULL 을 가장 큰 값으로 취급하므로 DESC 순위에서 대기분이 NULL 인 오라가 1위가 된다.
30분 동점 두 명은 둘 다 2위이고, 다음 행은 RANK 가 4위로 건너뛰고 DENSE_RANK 는 3위로 이어진다.
- 오라가 마지막인 결과는 NULLS LAST 로 정렬한 경우이다.
- 동점 두 명에 2위와 3위를 준 결과는 ROW_NUMBER 처럼 본 것이다.
- 표지안 RK 를 3으로 본 결과는 RANK 를 DENSE_RANK 처럼 계산한 것이다.
오류나 개정된 내용이 보이면 알려주세요