문제
다음 [점수] 테이블에서 SQL문을 실행했을 때, 이름이 '박'인 행의 rn 값을 쓰시오.
| 이름 | 과목 | 점수 |
|---|---|---|
| 김 | 수학 | 85 |
| 이 | 수학 | 90 |
| 박 | 수학 | 85 |
| 최 | 영어 | 90 |
| 정 | 영어 | 95 |
SQLSELECT 이름, 과목, ROW_NUMBER() OVER (PARTITION BY 과목 ORDER BY 점수 DESC, 이름) AS rn FROM 점수;
정답
3
3
해설
ROW_NUMBER()는 각 파티션 내에서 고유한 순번을 부여합니다. 1) PARTITION BY 과목으로 과목별로 그룹을 나눕니다. 2) ORDER BY 점수 DESC, 이름으로 점수 내림차순 후 이름 오름차순으로 정렬합니다. 3) 수학 과목에서 정렬 결과: 이(90점)=1위, 김(85점)=2위, 박(85점)=3위가 됩니다. 4) 김과 박은 동점이지만 이름 오름차순 정렬로 김이 박보다 앞서므로 박의 rn값은 3입니다.