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

bookВіконні Функції

Віконні функції — це категорія функцій SQL, які виконують обчислення над набором рядків, пов'язаних з поточним рядком у межах визначеного вікна або розділу.
Вони використовуються для виконання обчислень та аналізу над підмножиною рядків без зменшення результатного набору, на відміну від агрегатних функцій, які зазвичай зменшують кількість рядків, що повертаються запитом.

Пояснення

Припустимо, у нас є наступна таблиця Sales:

Якщо наша мета — обчислити загальний дохід для кожного окремого продукту та відобразити його в додатковій колонці основної таблиці, а не створювати нову згруповану таблицю, результат може виглядати так:

Але як це зробити?
Використання GROUP BY не підходить для цього завдання, оскільки ця конструкція зменшує кількість рядків, групуючи їх за вказаними критеріями, у результаті чого повертаються лише ідентифікатори та відповідні їм суми.

Саме тому віконні функції є необхідними для вирішення цієї проблеми.

Реалізація

Потрібний результат можна отримати за допомогою наступного запиту:

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
copy

Загальний синтаксис створення віконної функції можна описати наступним чином:

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: Назва таблиці, з якої вибираються дані.
question mark

Який оператор використовується для визначення розділення у віконній функції?

Select the correct answer

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Awesome!

Completion rate improved to 4.35

bookВіконні Функції

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

Віконні функції — це категорія функцій SQL, які виконують обчислення над набором рядків, пов'язаних з поточним рядком у межах визначеного вікна або розділу.
Вони використовуються для виконання обчислень та аналізу над підмножиною рядків без зменшення результатного набору, на відміну від агрегатних функцій, які зазвичай зменшують кількість рядків, що повертаються запитом.

Пояснення

Припустимо, у нас є наступна таблиця Sales:

Якщо наша мета — обчислити загальний дохід для кожного окремого продукту та відобразити його в додатковій колонці основної таблиці, а не створювати нову згруповану таблицю, результат може виглядати так:

Але як це зробити?
Використання GROUP BY не підходить для цього завдання, оскільки ця конструкція зменшує кількість рядків, групуючи їх за вказаними критеріями, у результаті чого повертаються лише ідентифікатори та відповідні їм суми.

Саме тому віконні функції є необхідними для вирішення цієї проблеми.

Реалізація

Потрібний результат можна отримати за допомогою наступного запиту:

1234567
SELECT sales_id, product_id, sales_date, amount, SUM(amount) OVER (PARTITION BY product_id) AS Total_Revenue_Per_Product FROM Sales;
copy

Загальний синтаксис створення віконної функції можна описати наступним чином:

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: Назва таблиці, з якої вибираються дані.
question mark

Який оператор використовується для визначення розділення у віконній функції?

Select the correct answer

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

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

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

Секція 3. Розділ 3
some-alt