Menu
Coddy logo textTech

Функция NTILE

Часть раздела Основы путешествия по SQL на Coddy. Урок 67 из 72.

NTILE(n) нумерует строки, разделяя их на n примерно равных частей. Эта функция часто используется для повышения производительности: отправка больших объёмов данных за один раз может быть не лучшей идеей, поэтому она позволяет отправлять меньшие части по очереди.

Например:

idlevel
14
24
35
46
57
67
SELECT id, level, NTILE(3) OVER (ORDER BY level) as pieces
from table1

Это вернёт:

idlevelpieces
141
241
352
462
573
673

У нас получилось 3 части: уровень 4 в части 1, уровни 5 и 6 в части 2 и уровень 7 в части 3.
Когда количество строк не делится на n без остатка, NTILE распределяет строки настолько равномерно, насколько это возможно, при этом сначала идут более крупные группы. Например, если у вас 9 строк и NTILE(4), распределение будет следующим:

  • Группа 1: 3 строки
  • Группа 2: 2 строки
  • Группа 3: 2 строки
  • Группа 4: 2 строки

Это гарантирует, что ни одна группа не отличается от любой другой группы более чем на одну строку, а дополнительные строки сначала распределяются по группам с меньшими номерами.

challenge icon

Задание

Легко

Доступные таблицы и столбцы:

  • creatures: creature_name, preference, has_legs (содержит 'YES' или 'NO')

В этом задании у нас есть существа, которые хотят найти себе пару. Нужно помочь им найти подходящую пару.

У каждого существа есть предпочтение, представленное числом. Если числа у обоих существ достаточно близки, они могут хорошо подойти друг другу.

Разделите существ на 3 группы на основе их значений предпочтения, но учитывайте только существ, у которых есть ноги (где has_legs = 'YES'). Верните creature_name, preference и их group_number (1, 2 или 3). Отсортируйте результаты по preference в порядке возрастания.

Попробуйте сами

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница SQL