Функция NTILE
Часть раздела Основы путешествия по SQL на Coddy. Урок 67 из 72.
NTILE(n) нумерует строки, разделяя их на n примерно равных частей. Эта функция часто используется для повышения производительности: отправка больших объёмов данных за один раз может быть не лучшей идеей, поэтому она позволяет отправлять меньшие части по очереди.
Например:
| id | level |
| 1 | 4 |
| 2 | 4 |
| 3 | 5 |
| 4 | 6 |
| 5 | 7 |
| 6 | 7 |
SELECT id, level, NTILE(3) OVER (ORDER BY level) as pieces
from table1Это вернёт:
| id | level | pieces |
| 1 | 4 | 1 |
| 2 | 4 | 1 |
| 3 | 5 | 2 |
| 4 | 6 | 2 |
| 5 | 7 | 3 |
| 6 | 7 | 3 |
У нас получилось 3 части: уровень 4 в части 1, уровни 5 и 6 в части 2 и уровень 7 в части 3.
Когда количество строк не делится на n без остатка, NTILE распределяет строки настолько равномерно, насколько это возможно, при этом сначала идут более крупные группы. Например, если у вас 9 строк и NTILE(4), распределение будет следующим:
- Группа 1: 3 строки
- Группа 2: 2 строки
- Группа 3: 2 строки
- Группа 4: 2 строки
Это гарантирует, что ни одна группа не отличается от любой другой группы более чем на одну строку, а дополнительные строки сначала распределяются по группам с меньшими номерами.
Задание
ЛегкоДоступные таблицы и столбцы:
creatures:creature_name,preference,has_legs(содержит 'YES' или 'NO')
В этом задании у нас есть существа, которые хотят найти себе пару. Нужно помочь им найти подходящую пару.
У каждого существа есть предпочтение, представленное числом. Если числа у обоих существ достаточно близки, они могут хорошо подойти друг другу.
Разделите существ на 3 группы на основе их значений предпочтения, но учитывайте только существ, у которых есть ноги (где has_legs = 'YES'). Верните creature_name, preference и их group_number (1, 2 или 3). Отсортируйте результаты по preference в порядке возрастания.
Попробуйте сами
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Больше ключевых слов
Ключевое слово INКлючевое слово BETWEENКлючевое слово LIKEКлючевое слово ASПовторение - Модели мобильных телефонов2Условия
Основы условийКлючевое слово ANDКлючевое слово ORКлючевое слово NOTКомбинирование нескольких условийСкобкиБулевы значения5Арифметические операции
Математические операторыМатематические столбцыОперация moduloФункция ROUND()3Специальный формат возврата
Значения NULLСортировка результатов, часть 1Сортировка результатов, часть 2Повторение - Фирма по кибербезопасностиОграничение количества записейПовторение - Автозавод6Вводные вызовы
Повторение - Парламентские выборыПовторение - Арест преступника полициейПовторение - Ёмкость для напитков в бареПовторение - Создание новых столбцов9Несколько таблиц
Базовый JOIN, Часть 1Базовый JOIN, Часть 2Повторение - JOINСамосоединениеПовторение - СамосоединениеОбъединениеУпрощение запросов, ключевое слово WITHПовторение - Запросы WITHПовторение - Подрядчик по недвижимости12Оконные функции, часть 2
Функции RANK и DENSE_RANKПовторение - RANK и DENSE_RANKФункция NTILEАгрегатные функцииКритерии ROWS и RANGEПотренируйтесь самостоятельно: Песочница SQL