Синтаксис:
>> 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. Ви можете реалізувати їх відповідно до своїх потреб.