NTILE과 Cume_Dist를 활용한 구간 나누기
NTILE로 행을 동일한 크기의 N개 구간으로 나누고 CUME_DIST와 PERCENT_RANK로 누적 분포를 계산해보세요.
NTILE과 Cume_Dist를 활용한 구간 나누기은(는) CoddyKit의 무료 SQL Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 SQL Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
NTILE: 동일한 크기의 버킷
NTILE(n)은 정렬된 행을 거의 동일한 크기의 n개 버킷으로 나눕니다.
SELECT id, total,
NTILE(4) OVER (ORDER BY total) AS quartile
FROM orders;
-- 1 = bottom 25%, 2 = next, 3, 4 = top 25%백분위수 버킷
십분위수에는 NTILE(10)을, 백분위수에는 NTILE(100)을 사용합니다.
SELECT id, score,
NTILE(100) OVER (ORDER BY score DESC) AS percentile
FROM students;
-- percentile 1 = top 1%PERCENT_RANK
[0, 1] 범위의 실수로 상대 순위를 반환합니다.
SELECT id, score,
PERCENT_RANK() OVER (ORDER BY score) AS pct_rank
FROM students;
-- 0 for the lowest, 1 for the highest.CUME_DIST
현재 행의 값 이하인 행의 비율을 반환합니다.
SELECT id, score,
CUME_DIST() OVER (ORDER BY score) AS cume_dist
FROM students;
-- "What share of students scored ≤ this one?"PERCENTILE_CONT를 사용한 백분위수 통계
백분위수 위치의 값을 계산합니다(연속 보간).
SELECT
PERCENTILE_CONT(0.5) WITHIN GROUP (ORDER BY total) AS median,
PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY total) AS p95,
PERCENTILE_CONT(0.99) WITHIN GROUP (ORDER BY total) AS p99
FROM orders;PERCENTILE_DISC
PERCENTILE_CONT와 비슷하지만 보간한 값이 아니라 실제로 존재하는 값을 반환합니다.
PERCENTILE_DISC(0.5) WITHIN GROUP (ORDER BY total)파티션에서 NTILE 사용
사용자별, 범주별 등으로 버킷을 나눕니다.
SELECT user_id, total,
NTILE(4) OVER (PARTITION BY user_id ORDER BY total) AS user_quartile
FROM orders;NTILE을 사용한 히스토그램
히스토그램 구간을 만듭니다.
SELECT bucket, MIN(total) AS bucket_min, MAX(total) AS bucket_max, COUNT(*)
FROM (
SELECT NTILE(10) OVER (ORDER BY total) AS bucket, total
FROM orders
) sub
GROUP BY bucket
ORDER BY bucket;버킷별 집계
버킷으로 나눈 후 각 버킷의 통계를 계산합니다.
SELECT user_quartile, COUNT(*) AS users, AVG(total) AS avg_total
FROM (
SELECT user_id, NTILE(4) OVER (ORDER BY total) AS user_quartile, total
FROM orders
) sub
GROUP BY user_quartile;윈도 함수 결합
하나의 쿼리에서 여러 함수를 섞어 풍부한 보고서를 만듭니다.
SELECT id, total,
NTILE(4) OVER w AS quartile,
PERCENT_RANK() OVER w AS pct_rank,
AVG(total) OVER w AS overall_avg
FROM orders
WINDOW w AS (ORDER BY total);NTILE이 오해를 일으키는 경우
ORDER BY 값이 동률이면 버킷 크기가 고르지 않을 수 있습니다(NTILE은 동률을 고려하지 않습니다). 동률을 판별할 보조 열을 사용하십시오.
요약
NTILE + PERCENT_RANK + CUME_DIST는 분포 분석을 다룹니다.
- 분위수 버킷에는 NTILE
- p50/p95/p99 통계에는 PERCENTILE_CONT/DISC
- 그룹별 분석을 위해 PARTITION BY와 결합
빠른 확인
응답 시간 열에서 p95 지연 시간을 구해야 합니다. 어떤 함수를 사용해야 합니까?
자주 묻는 질문
“NTILE과 Cume_Dist를 활용한 구간 나누기” 강의는 무료인가요?
네 — “NTILE과 Cume_Dist를 활용한 구간 나누기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 SQL Academy 강의 전체를 잠금 해제할 수 있습니다. SQL Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“NTILE과 Cume_Dist를 활용한 구간 나누기”에서 뭘 배우나요?
NTILE로 행을 동일한 크기의 N개 구간으로 나누고 CUME_DIST와 PERCENT_RANK로 누적 분포를 계산해보세요. 브라우저에서 직접 실행하는 실습 코드로 SQL Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
SQL Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 SQL Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.
“NTILE과 Cume_Dist를 활용한 구간 나누기” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 SQL Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 SQL Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 프레임 절: ROWS와 RANGE
- 프레임 윈도에서 LAG/LEAD 사용하기
- NTILE과 Cume_Dist를 활용한 구간 나누기
- 실전 보고서 작성 패턴