문제
다음 SQL에서 DENSE_RANK 함수의 결과에 대한 설명으로 적절한 것은?
SQLSELECT 부서, 사원명, 급여, DENSE_RANK() OVER(PARTITION BY 부서 ORDER BY 급여 DESC) AS RNK FROM 사원;
동일 부서에서 급여 순위가 1, 2, 2로 발생한 다음 행의 순위는?
① 3 ② 4 ③ 1 ④ NULL
정답
1번
해설
정답: 1. DENSE_RANK는 동일 순위가 있어도 다음 순위를 건너뛰지 않으므로 1, 2, 2 다음은 3이다.
오답 풀이
- 1번: DENSE_RANK의 올바른 결과이다.
- 2번: RANK 함수라면 1, 2, 2 다음이 4가 된다.
- 3번: PARTITION이 바뀌지 않는 한 다시 1이 되지 않는다.
- 4번: 순위 함수는 해당 행에 대해 순위 값을 반환한다.
보충 개념 RANK는 공동 순위 이후 순위를 건너뛴다. DENSE_RANK는 공동 순위 이후에도 연속된 순위를 부여한다.