Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Завдання: Використання Віконної Функції | Деякі Додаткові Теми
Просунуті Техніки в SQL

bookЗавдання: Використання Віконної Функції

Розглянемо таблицю bank_accounts, яку ми використовували у попередніх розділах:

Припустимо, ми хочемо додати до таблиці інформацію про клас, до якого належить кожен користувач залежно від залишку на рахунку.

Класи визначаються наступним чином:

  • Особа, чий залишок на рахунку знаходиться у нижніх 25%, належить до четвертого класу;
  • Особа, чий залишок на рахунку знаходиться між 25% та 50%, належить до третього класу;
  • Особа, чий залишок на рахунку знаходиться між 50% та 75%, належить до другого класу;
  • Особа, чий залишок на рахунку знаходиться у верхніх 25%, належить до першого класу.

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

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)

Note

У цьому прикладі не потрібно вказувати оператор PARTITION BY, оскільки ми хочемо застосувати функцію NTILE() до всього результату, а не до окремих підмножин або розділів даних.
Оператор ORDER BY є достатнім, оскільки він визначає порядок, у якому рядки розподіляються по тайлах, забезпечуючи групування на основі впорядкованого залишку по всій таблиці.
Якщо б ми хотіли обчислювати тайли всередині окремих груп (наприклад, департаментів), тоді використовували б PARTITION BY.

Завдання

Swipe to start coding

Ваше завдання — застосувати функцію NTILE(), щоб отримати інформацію про клас кожного власника рахунку.

Вам потрібно:

  1. Вказати кількість класів як аргумент функції.
  2. Задати сортування за балансом рахунку для визначення класу.
  3. Оскільки вважається, що перший клас — це клас з найбільшим балансом, необхідно впорядкувати баланси у спадному порядку.

Рішення

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 3. Розділ 5
single

single

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Suggested prompts:

How do I write a query to assign classes using NTILE() for this table?

Can you explain how NTILE() works with an example using these balances?

What would the result look like after adding the class column?

close

Awesome!

Completion rate improved to 4.35

bookЗавдання: Використання Віконної Функції

Свайпніть щоб показати меню

Розглянемо таблицю bank_accounts, яку ми використовували у попередніх розділах:

Припустимо, ми хочемо додати до таблиці інформацію про клас, до якого належить кожен користувач залежно від залишку на рахунку.

Класи визначаються наступним чином:

  • Особа, чий залишок на рахунку знаходиться у нижніх 25%, належить до четвертого класу;
  • Особа, чий залишок на рахунку знаходиться між 25% та 50%, належить до третього класу;
  • Особа, чий залишок на рахунку знаходиться між 50% та 75%, належить до другого класу;
  • Особа, чий залишок на рахунку знаходиться у верхніх 25%, належить до першого класу.

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

NTILE(num_buckets) OVER (
    ORDER BY sort_column
)

Note

У цьому прикладі не потрібно вказувати оператор PARTITION BY, оскільки ми хочемо застосувати функцію NTILE() до всього результату, а не до окремих підмножин або розділів даних.
Оператор ORDER BY є достатнім, оскільки він визначає порядок, у якому рядки розподіляються по тайлах, забезпечуючи групування на основі впорядкованого залишку по всій таблиці.
Якщо б ми хотіли обчислювати тайли всередині окремих груп (наприклад, департаментів), тоді використовували б PARTITION BY.

Завдання

Swipe to start coding

Ваше завдання — застосувати функцію NTILE(), щоб отримати інформацію про клас кожного власника рахунку.

Вам потрібно:

  1. Вказати кількість класів як аргумент функції.
  2. Задати сортування за балансом рахунку для визначення класу.
  3. Оскільки вважається, що перший клас — це клас з найбільшим балансом, необхідно впорядкувати баланси у спадному порядку.

Рішення

Switch to desktopПерейдіть на комп'ютер для реальної практикиПродовжуйте з того місця, де ви зупинились, використовуючи один з наведених нижче варіантів
Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

close

Awesome!

Completion rate improved to 4.35
Секція 3. Розділ 5
single

single

some-alt