NTILE(4)
정렬된 행의 순서를
4개 버킷으로 나눈다
ORDER BY salary로 일렬로 세운 뒤, 그 위치를 기준으로 1분위부터 4분위까지 붙입니다. 값 자체를 계산하는 함수가 아니라 정렬 결과를 묶는 함수입니다.
이 예시는 8행이므로 딱 나뉩니다
8행 / 4버킷 = 2행씩
각 분위가 정확히 2행을 가져서 경계가 깔끔하게 보입니다.
순서
정렬된 행
배정된 버킷
1
박민수 salary 3000
1분위
하위 25%
2
이영희 salary 3500
3
최지은 salary 4000
2분위
중간 아래 구간
4
김철수 salary 4500
5
정유진 salary 5000
3분위
중간 위 구간
6
한도현 salary 5500
7
오세준 salary 6000
4분위
상위 25%
8
장하린 salary 7000
읽는 법: 왼쪽 행은 salary ASC 결과이고, 오른쪽 버킷 번호는 그 정렬 순서에 따라 붙습니다.
나머지 처리 규칙
행 수가 딱 나뉘지 않으면 앞쪽 버킷이 먼저 하나 더 받습니다
예시: 10행을 NTILE(3)으로 분할
10 / 3 = 3 ... 1
기본은 3행씩이고, 남은 1행은 1번 버킷부터 추가됩니다.
4
1번 버킷
3
2번 버킷
3
3번 버킷
한 줄 요약
NTILE은 분위 경계를 값으로 자르지 않습니다.
먼저 정렬하고, 그 결과 집합을 가능한 한 균등하게 나누며, 남는 행은 앞쪽 그룹부터 배분합니다.