SELECT user_id, total_revenue,
NTILE(4) OVER (ORDER BY total_revenue DESC) AS quartile
FROM customer_revenue;
Результат:
user_id | total_revenue | quartile 1 | 5000 | 1 2 | 3200 | 1 3 | 800 | 4
SELECT region, user_id, revenue,
NTILE(10) OVER (PARTITION BY region ORDER BY revenue DESC) AS decile
FROM sales;
Результат:
region | user_id | revenue | decile МСК | 1 | 900 | 1 МСК | 2 | 100 | 10Порешать SQL-задачи в тренажёре →
NTILE — основа RFM-сегментации и вопроса «раздели клиентов на квантили». На собеседовании поясни разницу между делением по количеству строк (NTILE) и по значению (перцентили), и как получить границы бакетов.
NTILE делит на группы по числу строк (равное количество в каждой), а PERCENTILE_CONT/DISC возвращают пороговое значение на заданной доле распределения. NTILE отвечает «в какой квантиль попала строка», перцентиль — «какое значение на 90-й перцентили».
Используй NTILE(4) с ORDER BY по метрике: группа 1 — верхние 25%, группа 4 — нижние 25% (или наоборот при ASC).
Если строк не поровну, первые группы получают на одну строку больше остальных — так NTILE распределяет остаток.
ROW_NUMBER · RANK · DENSE_RANK · LAG · LEAD · SUM OVER
Открыть SQL-тренажёр (565 задач) →