문제
8명의 사원을 급여 내림차순으로 정렬한 뒤 다음 SQL을 실행했다. 그룹 컬럼에 부여되는 값을 위에서부터 순서대로 나열한 것은?
① 1,1,2,2,3,3,3,3 ② 1,2,3,1,2,3,1,2 ③ 1,1,1,2,2,2,3,3 ④ 1,1,1,1,2,2,3,3
정답
3번
해설
정답은 ③(1,1,1,2,2,2,3,3)이다. NTILE(n)은 정렬된 행들을 n개 그룹으로 최대한 균등 분할한다. 8행을 3그룹으로 나누면 8 ÷ 3 = 2 나머지 2이므로, 앞쪽 그룹부터 나머지를 한 개씩 더 배분한다. 즉 그룹 크기는 3, 3, 2가 되어 1이 3개, 2가 3개, 3이 2개 → 1,1,1,2,2,2,3,3이다.
- ①·④: 그룹별 개수 배분(3,3,2)을 잘못 계산한 경우.
- ②: NTILE을 라운드로빈처럼 1,2,3을 번갈아 매기는 것으로 오해한 경우로, NTILE은 연속된 블록으로 나눈다.
보충: 나머지가 있으면 '앞 그룹부터' 크기가 1씩 커진다. NTILE(4)로 8행이면 정확히 2,2,2,2.