Віконні Функції
Свайпніть щоб показати меню
Віконні функції — це категорія SQL-функцій, які виконують обчислення над набором рядків, пов'язаних з поточним рядком у межах визначеного вікна або розділу.
Вони використовуються для виконання обчислень та аналізу над підмножиною рядків без зменшення результатного набору, на відміну від агрегатних функцій, які зазвичай зменшують кількість рядків, що повертаються запитом.
Пояснення
Припустимо, у нас є наступна таблиця Sales:
12SELECT * FROM sales
Якщо наша мета — обчислити загальний дохід для кожного окремого продукту та відобразити його в додатковій колонці основної таблиці, а не створювати нову згруповану таблицю, результат може виглядати так:
Але як це зробити?
Використання GROUP BY не підходить для цього завдання, оскільки цей оператор зменшує кількість рядків, групуючи їх за вказаними критеріями, у результаті чого повертаються лише ідентифікатори та відповідні їм суми.
Саме тому віконні функції є необхідними для вирішення цієї проблеми.
Реалізація
Необхідний результат можна отримати за допомогою наступного запиту:
1234567SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
- Назва функції:
SUM - Опис: Обчислює суму вказаного стовпця у визначеному вікні.
- Аргументи:
Amount: Стовпець, який підсумовується.
- Віконна функція:
- OVER: Вказує вікно, в межах якого виконується агрегація.
- PARTITION BY Product_ID: Розбиває набір результатів на розділи за значеннями стовпця
Product_ID. Сума обчислюється окремо для кожного розділу.
- Псевдонім:
Total_Revenue_Per_Product: Назва, присвоєна обчисленій сумі для кожного розділу. - Використання: Ця функція використовується для підрахунку загального доходу по кожному продукту, підсумовуючи значення для кожного product ID.
- Результат: Набір результатів містить стовпці
Sales_ID,Product_ID,Sales_Date,AmountтаTotal_Revenue_Per_Productз таблиціsales, деTotal_Revenue_Per_Productвідображає загальний дохід для кожного product ID. - Сортування: Набір результатів відсортовано за
Sales_Date.
Загальний синтаксис створення віконної функції можна описати так:
SELECT
aggregation_func() OVER (
PARTITION BY partition_column
ORDER BY order_column
)
FROM
table_name;
- SELECT: вказує на початок запиту;
- aggregation_func(): агрегатна функція (наприклад,
SUM,AVG,COUNT), яка виконує обчислення над набором рядків, визначених вікном; - OVER: ключове слово, що вводить віконну функцію;
- PARTITION BY: розділяє результуючу вибірку на розділи за значеннями вказаного стовпця(ів). Віконна функція виконується окремо для кожного розділу;
- partition_column: стовпець, який використовується для розділення вибірки.
- ORDER BY: визначає порядок рядків у кожному розділі;
- order_column: стовпець, який використовується для впорядкування рядків у кожному розділі.
- FROM: вказує джерело даних, з якого здійснюється вибірка;
- table_name: назва таблиці, з якої вибираються дані.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат