문제
다음 테이블에서 각 부서별로 급여가 높은 순서대로 순번을 매기되, 동일 급여는 같은 순번을 부여하고 다음 순번은 건너뛰지 않으려고 한다. 적절한 SQL은?
EMP 테이블: DEPT(10,10,20,20), SAL(3000,2000,3000,2000)
① ROW_NUMBER() OVER(PARTITION BY DEPT ORDER BY SAL DESC) ② RANK() OVER(PARTITION BY DEPT ORDER BY SAL DESC) ③ DENSE_RANK() OVER(PARTITION BY DEPT ORDER BY SAL DESC) ④ NTILE(2) OVER(PARTITION BY DEPT ORDER BY SAL DESC)
정답
3번
해설
③ (정답) DENSE_RANK()는 동일 값에 같은 순위를 부여하되 다음 순위를 건너뛰지 않습니다(1,1,2,3...). ① (오답) ROW_NUMBER()는 동일 값이라도 서로 다른 번호를 부여합니다. ② (오답) RANK()는 동일 값에 같은 순위를 부여하지만 다음 순위를 건너뜁니다(1,1,3,4...). ④ (오답) NTILE()은 전체를 N개 그룹으로 나누는 함수로 순위 부여와는 다릅니다.