PostgreSQL

Функція вікна PostgreSQL NTILE

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

Синтаксис:

>> NTILE (сегменти) НАД ([PARTITION BY вираз розділу, ...] [ORDET BY выраження сортування]) [ASC | DESC],…]);

Перш за все, щоб зрозуміти метод NTILE, увійдіть із оболонки PostgreSQL. Ось чому спробуйте запустити оболонку командного рядка PostgreSQL із програм. Для роботи на іншому Сервері введіть ім'я сервера; в іншому випадку натисніть Enter. Якщо вам потрібно потренуватися в раніше призначеній базі даних, e.g., Postgres, потім натисніть Enter або ще, впишіть заголовок банку даних, e.g. "тест". Щоб використовувати порт, відмінний від 5432, впишіть його; якщо ні, залиште його як є і натисніть Enter, щоб продовжити. Він може попросити вас ввести ім’я користувача, якщо вам потрібно буде перейти на нове ім’я користувача. Введіть ім'я користувача; в іншому випадку просто натисніть Enter. Нарешті, ви повинні ввести свій поточний пароль користувача, щоб переключитися за допомогою командного рядка, використовуючи конкретного користувача, як показано нижче. Згодом, ефективно ввівши всі обов’язкові дані, ви можете розпочати роботу над NTILE.

Щоб розпочати роботу над NTILE, вам потрібно створити нову таблицю за допомогою команди CREATE, якщо у вас її немає. Подумайте про таблицю "співробітник", що відображається нижче, у вашій базі даних PostgreSQL, названу "тестом". Ця таблиця містить чотири стовпці e.g., ідентифікаційний номер, ім'я, вік та зарплата працівника певної компанії. Кожен стовпець має загалом 10 рядків, що означає 10 записів у кожному полі стовпця.

>> ВИБЕРИТЕ * ВІД працівника;

На початку ми повинні зрозуміти просту концепцію отримання записів із таблиці за допомогою речення ORDER BY. Ми виконували наведену нижче команду SELECT, не використовуючи NTILE для короткої розробки та розуміння концепції. Ми отримуємо записи для стовпців; ім'я, вік та заробітна плата під час сортування записів у порядку зростання поля "вік". Ви можете бачити, що він буде просто відображати записи, як показано на зображенні.

>> ВИБЕРІТЬ ім'я, вік, заробітну плату ВІД ЗАМОВЛЕНОГО ПРАЦІВНИКА за віком;

Використання NTILE () OVER з пропозицією ORDER BY:

Припускаючи ту саму таблицю “працівник”, давайте почнемо використовувати речення NTILE () OVER у нашому прикладі. У цьому прикладі ми вибрали дві колонки; ім'я та заробітна плата, під час сортування результату, що відноситься до порядку зростання стовпця "заробітна плата". Результат буде містити дані, коли вік працівника перевищує 24 роки. Ми визначили значення сегмента NTILE як "3", оскільки ми хочемо розділити рядки на 3 сегменти, e.g., 1 до 3. Ви бачите, що рядки були успішно розділені на 3 рівні сегменти, що містять 3 рядки в кожному сегменті.

>> ВИБЕРІТЬ ім'я, зарплату, NTILE (3) НАД (ЗАМОВИТИ ЗАРОБОЮ) Fromemloyee WHERE вік> '24';

Давайте візьмемо ще один приклад, використовуючи ту саму таблицю “працівник”. Цього разу ми хочемо отримати записи з трьох стовпців; ім'я, вік та зарплата за допомогою запиту SELECT у командній оболонці. У пункті WHERE є незначні зміни. В даний час ми шукаємо записи таблиці "працівник", де вік менше 27 років, і ми отримаємо лише записи віком менше 27 років. З іншого боку, значення сегмента не змінюється, оскільки воно знову 3. Спробувавши заявлену команду, ми знайшли лише три записи, однаково розділені на 3 відра, як показано на малюнку.

>> ВИБЕРІТЬ ім'я, вік, зарплату, NTILE (3) НАД (ЗАМОВИТИ ЗАРОБОЮ) ВІД працівника ДЕ віку < '27';

Використання NTILE () НАД ЗА ПОРЯДОК ЗАМОВЛЕННЯ ТА РАЗДІЛУ ПО:

Давайте наведемо приклад NTILE () OVER при одночасному використанні пропозицій PARTITION BY та ORDER BY. Припустимо, що буде використана незмінена таблиця “працівник” із “тесту” бази даних. У цьому прикладі вам потрібно вибрати три стовпці; ім'я, вік та заробітна плата при сортуванні за зростанням поля "вік". Крім того, ми використовуємо речення PARTITION BY у стовпці «заробітна плата», щоб зробити розділи таблиці відповідно до цього стовпця. Немає конкретної умови, яка була використана в цьому конкретному запиті, що означає, що будуть відображатися всі записи таблиці "працівник". Відро NTILE має значення "3". Під час виконання зазначеного нижче запиту ви побачите нижченаведений результат. Розділи виконуються відповідно до різних значень стовпця "заробітна плата". Всі значення стовпця "заробітна плата" різні, тому він лежить у різних розділах, крім значення "60000". Це означає, що кожен розділ отримав 1 значення, крім одного. Після цього всі рядки розділів отримали ранжування через сегменти. Лише одне відро отримало 2 ранг.

>> ВИБЕРІТЬ ім’я, вік, зарплату, NTILE (3) НАД (РОЗДІЛ ЗА ЗАРОБОТОЮ, ЗАМОВИТИ ЗА ВІКОМ) ВІД працівника;

Взявши той самий приклад NTILE () OVER із використанням пропозицій PARTITION BY та ORDER BY з реченням WHERE. У пункті WHERE ми визначили умову, яка говорить, що єдиними записами, які будуть отримані, є вік працівника менше 27 років. Ми отримали лише 3 результати з 2 розділами відповідно до віку та “ntile” стовпчиком із рангами.

>> ВИБЕРІТЬ ім'я, вік, заробітну плату, NTILE (3) НАД (ПОДІЛ ЗА ЗАРОБОЮ, ЗАМОВИТИ ЗА ВІКОМ) ВІД працівника ДЕ віку < '27';

Висновок:

У цьому посібнику ми обговорили різні приклади функцій ntile. Ви можете реалізувати їх відповідно до своїх потреб.

Vulkan for Linux Users
With each new generation of graphics cards, we see game developers push the limits of graphical fidelity and come one step closer to photorealism. But...
OpenTTD vs Simutrans
Creating your own transport simulation can be fun, relaxing and extremely enticing. That's why you need to make sure that you try out as many games as...
OpenTTD Tutorial
OpenTTD is one of the most popular business simulation games out there. In this game, you need to create a wonderful transportation business. However,...