Модульні уроки (1/4)
Вступ і речення OVER
Вступ і речення OVER
У попередніх уроках ми бачили, як використовувати GROUP BY для агрегування даних. Однак GROUP BY має величезне обмеження: він згортає рядки. Якщо ви згрупуєте за містом, ви отримаєте один рядок для кожного міста та втратите інформацію про окремих клієнтів.
Ось тут і вступають у гру Функції вікон. Вони дозволяють виконувати сукупні обчислення (наприклад, суми чи середні значення) зберігаючи вихідні рядки.
Речення OVER().
Магічне ключове слово OVER(). Він повідомляє базі даних, що агрегатну функцію (наприклад, SUM, AVG, COUNT) слід розглядати як віконну функцію, обчислену для всього набору результатів (глобальне «вікно»), але застосовувати та повертати до кожного окремого рядка.
SELECT
order_id,
total_amount,
AVG(total_amount) OVER() AS global_average
FROM orders;У цьому прикладі ми зберігаємо кожне окреме замовлення, але кожен рядок також має стовпець global_average із середнім значенням усіх_ замовлень. Дуже корисно, наприклад, щоб виміряти, наскільки замовлення відхиляється від середнього!
Виберіть стовпець "ціна" в таблиці "продукти". Додайте стовпець під назвою "global_max_price", який містить максимальну ціну, обчислену за допомогою віконної функції для всієї таблиці.
Показати підказку
Використовуйте MAX(ціна) у поєднанні з OVER().
Рішення доступне після 3 спроб
Витягніть «id», «price» і додайте загальну середню ціну («global_avg») із таблиці «products».
Показати підказку
Просто додайте AVG(price) OVER().
Рішення доступне після 3 спроб