SQLDSQL 활용ROW_NUMBER난이도 2MCQ

SQLD ROW_NUMBER 기출문제 #3635

문제

다음 SQL에 대한 설명으로 가장 적절한 것은?

SQL
SELECT * FROM ( SELECT ROW_NUMBER() OVER(ORDER BY 점수 DESC) AS RN, 이름, 점수 FROM 성적 ) WHERE RN <= 2 ORDER BY RN DESC;

<조건> 점수 상위 2명의 RN과 점수가 각각 RN=1, 점수=150 / RN=2, 점수=40이라고 할 때 최종 출력 순서는 어떻게 되는가?

① RN=1, 점수=150 다음 RN=2, 점수=40 ② RN=2, 점수=40 다음 RN=1, 점수=150 ③ 점수 오름차순으로 전체 데이터 출력 ④ RN 값과 무관하게 입력 순서대로 출력

정답

2

해설

정답: 2. ROW_NUMBER는 점수 DESC 기준으로 번호를 부여하지만 최종 출력은 ORDER BY RN DESC에 따라 RN이 큰 행부터 출력된다.

오답 풀이

  • 1번: RN 오름차순 출력일 때의 결과이다.
  • 2번: 최종 ORDER BY RN DESC에 맞다.
  • 3번: 전체 데이터가 아니라 RN <= 2인 행만 출력한다.
  • 4번: 최종 ORDER BY가 있으므로 입력 순서대로 출력되지 않는다.

보충 개념 분석 함수의 ORDER BY와 최종 SELECT의 ORDER BY는 역할이 다르다. 분석 함수의 ORDER BY는 순번 산정 기준이고, 마지막 ORDER BY는 출력 순서 기준이다.

SQLD 시험 준비 가이드

이런 문제 20~50개를 한 번에 풀어보세요

매번 새로 추가되는 모의고사 + 오답 자동 복습 + 회차별 실력 추적. 회원가입 후 무료 이용.

[SQLD] ROW_NUMBER SQL 활용 기출 #3635 | 문어CBT