Последнее обновление
NTILE
Описание
Оконная функция NTILE() делит упорядоченный набор данных на заданное количество групп примерно одинакового размера. Группы нумеруются последовательно от 1 до заданного количества групп. Если данные невозможно разделить поровну, оставшиеся записи распределяются по группам с меньшими номерами, так что количество строк в любых двух группах различается не более чем на 1.
Синтаксис
NTILE( <constant_value> )
Параметры
| Параметр | Описание |
|---|---|
| constant_value | Обязательный параметр. Задаёт количество создаваемых групп и должен быть положительным целым числом |
Возвращаемое значение
Возвращает номер группы типа BIGINT в диапазоне от 1 до заданного количества групп.
Примечания по использованию
Если оператор содержит и предложение ORDER BY в функции NTILE, и предложение ORDER BY для выводимых результатов, эти две сортировки выполняются независимо:
- ORDER BY в функции NTILE определяет, в какую группу попадёт каждая строка
- ORDER BY для вывода определяет порядок отображения результатов
Примеры
SELECT
name,
score,
NTILE(4) OVER (ORDER BY score DESC) as quarter
FROM student_scores;
+----------+-------+---------+
| name | score | quarter |
+----------+-------+---------+
| Alice | 98 | 1 | -- Top 25% scores
| Bob | 95 | 1 |
| Charlie | 90 | 2 | -- 25-50% scores
| David | 85 | 2 |
| Eve | 82 | 3 | -- 50-75% scores
| Frank | 78 | 3 |
| Grace | 75 | 4 | -- Bottom 25% scores
| Henry | 70 | 4 |
+----------+-------+---------+