다음 SQL 의 실행 결과로 옳은 것은?[예약]예약번호편명운임1KE10… | [SQLD] SQL 개발자 기출유형 모의고사 4회 상세 페이지

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

[예약]

예약번호편명운임
1KE101500
2KE101500
3KE101300
4KE101200
5OZ330400
6OZ330300
7OZ330300
SELECT 예약번호, 편명, 운임
  FROM (SELECT 예약번호, 편명, 운임,
               RANK() OVER (PARTITION BY 편명
                            ORDER BY 운임 DESC) AS RK
          FROM 예약) T
 WHERE RK <= 2
 ORDER BY 편명, 운임 DESC, 예약번호;
1
예약번호편명운임
1KE101500
2KE101500
5OZ330400
6OZ330300
2
예약번호편명운임
1KE101500
2KE101500
5OZ330400
6OZ330300
7OZ330300
3
예약번호편명운임
1KE101500
2KE101500
3KE101300
5OZ330400
6OZ330300
7OZ330300
4
예약번호편명운임
1KE101500
2KE101500
해설

RANK 는 동점에 같은 순위를 주고 그 수만큼 다음 순위를 건너뛰므로, KE101 은 500 두 건이 1위, 300 이 3위가 되어 예약 1·2만 남는다.

OZ330 은 400 이 1위, 300 두 건이 공동 2위라 예약 5·6·7이 모두 RK ≤ 2 를 만족해 결과는 5행이다.

  • 예약 3까지 남은 표는 순위를 건너뛰지 않는 DENSE_RANK 의 결과이다.
  • 파티션마다 정확히 2행인 표는 동점에도 고유 번호를 주는 ROW_NUMBER 의 결과이다.
  • 예약 1·2만 있는 표는 PARTITION BY 없이 전체에서 순위를 매긴 결과이다.

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

이어서 풀어보기

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