SQL의 NTILE() 함수는 데이터를 N개의 그룹으로 균등하게 나누어 그룹 번호를 부여하는 함수입니다.
예를 들어, **상위 25%, 중위 25%, 하위 25%**와 같이 데이터를 구간별로 나누는 데 유용합니다.
✅ 1. NTILE() 함수 개념
NTILE(N) 함수는 데이터를 N개의 그룹으로 균등하게 분배하며,
각 행은 1부터 N까지의 그룹 번호를 부여받음
📌 기본 문법
SELECT column_name,
NTILE(N) OVER (ORDER BY column_name) AS group_num
FROM table_name;

✅ 2. NTILE 예제
📌 예제 1: 직원 급여를 4개 그룹으로 나누기
SELECT employee_id, name, salary,
NTILE(4) OVER (ORDER BY salary DESC) AS salary_group
FROM employees;
📌 실행 결과
설명
- 급여(salary) 기준 내림차순 정렬 후, 4개의 그룹으로 분배
- 급여가 높은 직원이 1번 그룹, 낮은 직원이 4번 그룹
✅ 3. NTILE() 활용 사례
📌 예제 2: 학생 성적을 3개의 등급으로 나누기
학생 성적(score)을 기준으로 상위, 중위, 하위 3등급으로 나누는 경우
SELECT student_id, name, score,
NTILE(3) OVER (ORDER BY score DESC) AS grade
FROM students;

설명
- NTILE(3)을 사용해 상위(1), 중위(2), 하위(3) 그룹으로 분류
- 성적이 높은 학생이 1등급, 낮은 학생이 3등급
📌 예제 3: 고객을 VIP/일반/보통 그룹으로 나누기
고객의 구매 금액을 기준으로 3개의 그룹(VIP, 일반, 보통 고객)으로 나누는 경우
SELECT customer_id, name, total_spent,
NTILE(3) OVER (ORDER BY total_spent DESC) AS customer_group
FROM customers;
설명
- NTILE(3)을 사용해 구매 금액을 기준으로 VIP/일반/보통 고객으로 나눔
- 구매 금액이 높은 고객이 1번 그룹(VIP)
✅ 4. NTILE() vs RANK() vs DENSE_RANK() 차이점
함수 | 설명 |
RANK() | 동일한 순위가 있으면 건너뛰고 다음 순위 부여 |
DENSE_RANK() | 동일한 순위가 있어도 연속된 순위 부여 |
NTILE(N) | N개의 그룹으로 분배, 그룹 번호 부여 |
📌 차이점 예제 (급여 기준 정렬)
✅ 5. 정리
✅ NTILE(N) 함수는 데이터를 N개의 그룹으로 균등하게 분배하는 데 사용
✅ ORDER BY 기준으로 상위, 중위, 하위 등급을 나누는 경우에 유용
✅ RANK(), DENSE_RANK()와 다르게 순위가 아니라 그룹을 나누는 기능
✅ VIP 고객, 성적 등급, 급여 등급과 같은 그룹화가 필요한 경우 사용하면 효과적
'기획자가 알아야 할 IT지식 > 기획자가 알아야 할 SQL' 카테고리의 다른 글
25강. 누적 합계 구하기 (SUM OVER 함수) (0) | 2025.03.24 |
---|---|
23강. 순위 함수 사용하기 (RANK, DENSE_RANK) (0) | 2025.03.24 |
22강. SQL에서 합계 및 개수 구하기 (SUM, COUNT) (0) | 2025.03.24 |
21강. SQL에서 최대, 최소, 평균값 구하기 (MAX, MIN, AVG) (0) | 2025.03.23 |
20강. 조건에 따라 다른 값을 반환하는 CASE WHEN 문 (0) | 2025.03.23 |