SQLDSQL 활용순위 함수난이도 4MCQ

SQLD 순위 함수 기출문제 #3843

문제

아래 SQL에서 EMPLOYEE_ID가 7780인 행의 결과로 알맞은 것은?

EMPLOYEE_IDSALARY
77804000
77814000
77823000
77833000
77842000
SQL
SELECT EMPLOYEE_ID, ROW_NUMBER() OVER (ORDER BY SALARY, EMPLOYEE_ID) AS ROW_NUM, RANK() OVER (ORDER BY SALARY) AS RANK_NUM, DENSE_RANK() OVER (ORDER BY SALARY) AS DENSE_RANK_NUM FROM EMPLOYEES;

① 4, 4, 3 ② 3, 3, 3 ③ 4, 4, 4 ④ 3, 4, 3

정답

1

해설

정답: 1. SALARY 오름차순에서 2000이 1번째, 3000 두 행이 23번째, 4000 두 행이 45번째이다. ROW_NUMBER는 SALARY, EMPLOYEE_ID 기준으로 정렬하므로 7780은 4000 그룹의 첫 번째가 되어 ROW_NUMBER 4, RANK 4, DENSE_RANK 3이다.

오답 풀이

  • 1번: ROW_NUMBER 4, RANK 4, DENSE_RANK 3으로 맞다.
  • 2번: RANK가 3이 될 수 없다.
  • 3번: DENSE_RANK는 4000을 세 번째 distinct 값으로 보므로 3이다.
  • 4번: ROW_NUMBER가 3이 될 수 없다.

보충 개념 ROW_NUMBER는 행마다 고유 번호를 부여한다. RANK는 동점 이후 순위를 건너뛰고, DENSE_RANK는 동점 이후 순위를 건너뛰지 않는다. ROW_NUMBER는 동점이 있으면 추가 정렬 기준을 명시해야 결과가 안정적이다.

SQLD 시험 준비 가이드

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

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

[SQLD] 순위 함수 SQL 활용 기출 #3843 | 문어CBT