Віконні Функції
Віконні функції — це категорія функцій SQL, які виконують обчислення над набором рядків, пов'язаних з поточним рядком у межах визначеного вікна або розділу.
Вони використовуються для виконання обчислень та аналізу над підмножиною рядків без зменшення результатного набору, на відміну від агрегатних функцій, які зазвичай зменшують кількість рядків, що повертаються запитом.
Пояснення
Припустимо, у нас є наступна таблиця 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;
Загальний синтаксис створення віконної функції можна описати наступним чином:
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: Назва таблиці, з якої вибираються дані.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 4.35
Віконні Функції
Свайпніть щоб показати меню
Віконні функції — це категорія функцій SQL, які виконують обчислення над набором рядків, пов'язаних з поточним рядком у межах визначеного вікна або розділу.
Вони використовуються для виконання обчислень та аналізу над підмножиною рядків без зменшення результатного набору, на відміну від агрегатних функцій, які зазвичай зменшують кількість рядків, що повертаються запитом.
Пояснення
Припустимо, у нас є наступна таблиця 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;
Загальний синтаксис створення віконної функції можна описати наступним чином:
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: Назва таблиці, з якої вибираються дані.
Дякуємо за ваш відгук!