Перейти к содержимому
Последнее обновление

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 |
+----------+-------+---------+