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
환자명대기분RKDRK
오라(null)11
강민3022
하율3032
표지안2043
남궁솔1054
2
환자명대기분RKDRK
오라(null)11
강민3022
하율3022
표지안2033
남궁솔1044
3
환자명대기분RKDRK
오라(null)11
강민3022
하율3022
표지안2043
남궁솔1054
4
환자명대기분RKDRK
강민3011
하율3011
표지안2032
남궁솔1043
오라(null)54
해설

Oracle 은 정렬 시 NULL 을 가장 큰 값으로 취급하므로 DESC 순위에서 대기분이 NULL 인 오라가 1위가 된다.

30분 동점 두 명은 둘 다 2위이고, 다음 행은 RANK 가 4위로 건너뛰고 DENSE_RANK 는 3위로 이어진다.

  • 오라가 마지막인 결과는 NULLS LAST 로 정렬한 경우이다.
  • 동점 두 명에 2위와 3위를 준 결과는 ROW_NUMBER 처럼 본 것이다.
  • 표지안 RK 를 3으로 본 결과는 RANK 를 DENSE_RANK 처럼 계산한 것이다.

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

이어서 풀어보기

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