PostgreSQL

Оконная функция PostgreSQL NTILE

Оконная функция PostgreSQL NTILE
Оконные методы в PostgreSQL были отброшены, чтобы уравнять расходящиеся данные, и необходимы для аналитических и других сценариев использования PostgreSQL. Метод NTILE (), за которым следует предложение OVER в PostgreSQL, отбрасывается, чтобы разделить организованные строки на несколько похожих на серию градуированных сегментов. Сегменты - это не что иное, как набор ранжированных групп. В этой статье вы узнаете, как разделить отсортированные строки в разделе на заданное число ранжированных сегментов с помощью функции PostgreSQL NTILE (). Метод NTILE () назначает номер сегмента каждой группе, начиная с 1 в наборе, демонстрируя набор, в котором строка занимает свое место.

Синтаксис:

>> NTILE (buckets) OVER ([РАЗДЕЛЕНИЕ ПО выражению раздела,…] [ПОРЯДОК выражения сортировки]) [ASC | DESC],…]);

Прежде всего, чтобы понять метод NTILE, войдите в оболочку PostgreSQL. Поэтому попробуйте запустить оболочку командной строки PostgreSQL из приложений. Для работы на другом Сервере введите имя сервера; в противном случае нажмите Enter. Если вам нужно попрактиковаться в ранее назначенной базе данных, e.грамм., Postgres, затем нажмите Enter или впишите название банка данных, e.грамм. 'контрольная работа'. Чтобы использовать порт, отличный от 5432, впишите его; в противном случае оставьте все как есть и нажмите Enter, чтобы продолжить. Он может попросить вас ввести имя пользователя, если вам нужно перейти на новое имя пользователя. Введите имя пользователя; иначе просто нажмите Enter. Наконец, вы должны ввести свой текущий пароль пользователя, чтобы переключиться с помощью командной строки, используя этого конкретного пользователя, как показано ниже. Впоследствии, введя все обязательные данные, можно приступить к работе на NTILE.

Чтобы начать работу над NTILE, вам нужно создать новую таблицу с помощью команды CREATE, если у вас ее нет. Подумайте о приведенной ниже таблице «employee» в вашей базе данных PostgreSQL с именем «test». Эта таблица содержит четыре столбца e.грамм., id, имя, возраст и зарплата сотрудника конкретной компании. В каждом столбце всего 10 строк, что означает 10 записей в каждом поле столбца.

>> ВЫБРАТЬ * ОТ сотрудника;

Для начала мы должны понять простую концепцию выборки записей из таблицы с помощью предложения ORDER BY. Мы выполняли приведенную ниже команду SELECT без использования NTILE, чтобы кратко проработать и понять концепцию. Извлекаем записи для столбцов; имя, возраст и зарплата при сортировке записей в порядке возрастания поля «возраст». Вы можете видеть, что он просто отображает записи, как показано на изображении.

>> ВЫБЕРИТЕ имя, возраст, зарплату ОТ сотрудника ЗАКАЗАТЬ ПО возрасту;

Использование NTILE () OVER с предложением ORDER BY:

Предполагая, что та же таблица «employee», давайте начнем использовать предложение NTILE () OVER в нашем примере. В этом примере мы выбрали два столбца; имя и зарплата, при сортировке результата по возрастанию столбца «зарплата». Результат будет содержать данные, если возраст сотрудника превышает 24 года. Мы определили значение сегмента NTILE как «3», потому что мы хотим разделить строки на 3 сегмента, e.грамм., 1 к 3. Вы можете видеть, что строки были успешно разделены на 3 равных сегмента, по 3 строки в каждом сегменте.

>> ВЫБЕРИТЕ имя, зарплату, NTILE (3) ВЫШЕ (ПОРЯДОК ПО зарплате) ОТ сотрудника, ГДЕ возраст> '24';

Теперь давайте рассмотрим другой пример с той же таблицей «employee». На этот раз мы хотим получить записи из трех столбцов; имя, возраст и зарплата с помощью запроса SELECT в командной оболочке. В предложение WHERE внесены небольшие изменения. В настоящее время мы ищем записи таблицы «employee», возраст которой составляет менее 27 лет, в которую будут попадать только записи с возрастом менее 27 лет. С другой стороны, значение сегмента не изменилось, так как оно снова равно 3. Попробовав указанную команду, мы нашли всего три записи, поровну разделенные на 3 сегмента, как показано на картинке.

>> ВЫБЕРИТЕ имя, возраст, зарплату, NTILE (3) ВЫШЕ (ЗАПРОСИТЬ ПО зарплате) ОТ сотрудника ГДЕ возраст < '27';

Использование NTILE () OVER с условиями ORDER BY и PARTITION BY:

Давайте рассмотрим пример NTILE () OVER при одновременном использовании предложений PARTITION BY и ORDER BY. Предположим, что будет использоваться неизмененная таблица «сотрудник» из базы данных «тест». В этом примере вам нужно выбрать три столбца; имя, возраст и зарплата, при сортировке по возрастанию поля «возраст». Кроме того, мы использовали предложение PARTITION BY в столбце «зарплата», чтобы разбить таблицу на разделы в соответствии с этим столбцом. В этом конкретном запросе нет конкретного условия, которое означает, что будут отображаться все записи таблицы «employee». Сегмент NTILE имеет значение «3». При выполнении нижеприведенного запроса вы увидите результат ниже. Разделы выполняются в соответствии с различными значениями столбца «зарплата». Все значения столбца «зарплата» различны, поэтому он лежит в разных разделах, кроме значения «60000». Это означает, что каждый раздел получил одно значение, кроме одного. После этого все строки раздела были ранжированы по сегментам. Только одно ведро получило 2-е место.

>> ВЫБЕРИТЕ имя, возраст, зарплату, NTILE (3) ВЫШЕ (РАЗДЕЛЕНИЕ ПО заработной плате, ПОРЯДОК ПО возрасту) ОТ сотрудника;

Возьмем тот же пример NTILE () OVER с использованием предложений PARTITION BY и ORDER BY с предложением WHERE. В предложении WHERE мы определили условие, которое гласит, что будут извлечены только записи, в которых возраст сотрудника составляет менее 27 лет. Мы получили только 3 результата с 2 разделениями по возрасту и столбцу «ntile» с рейтингами.

>> ВЫБЕРИТЕ имя, возраст, зарплату, NTILE (3) ВЫШЕ (РАЗДЕЛЕНИЕ ПО зарплате, ПОРЯДОК ПО ВОЗРАСТУ) ОТ сотрудника ГДЕ возраст < '27';

Заключение:

В этом руководстве мы обсудили различные примеры функций ntile. Вы можете реализовать их по своему усмотрению.

Как записать и транслировать игровую сессию в Linux
В прошлом игры считались только хобби, но со временем игровая индустрия увидела огромный рост с точки зрения технологий и количества игроков. Игровая ...
Лучшие игры с отслеживанием рук
Oculus Quest недавно представил отличную идею отслеживания рук без контроллеров. С постоянно растущим числом игр и действий, которые осуществляются фо...
Как показать наложение OSD в полноэкранных приложениях и играх Linux
Игра в полноэкранные игры или использование приложений в полноэкранном режиме без отвлекающих факторов может отрезать вас от соответствующей системной...