0Pricing
SQL Academy · 강의

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 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 프레임 절: ROWS와 RANGE
  2. 프레임 윈도에서 LAG/LEAD 사용하기
  3. NTILE과 Cume_Dist를 활용한 구간 나누기
  4. 실전 보고서 작성 패턴
← SQL Academy(으)로 돌아가기