Lekcje modułu (1/4)
Wprowadzenie i klauzula OVER
Wprowadzenie i klauzula OVER
W poprzednich lekcjach widzieliśmy, jak używać GROUP BY do agregowania danych. Jednak GROUP BY ma ogromne ograniczenie: zwija wiersze. Jeśli grupujesz według miast, otrzymasz jeden wiersz na miasto i utracisz dane poszczególnych klientów.
Tutaj w grę wchodzą Funkcje okna. Umożliwiają przeprowadzanie obliczeń zbiorczych (takich jak sumy lub średnie) przy zachowaniu oryginalnych wierszy.
Klauzula OVER().
Magicznym słowem kluczowym jest OVER(). Informuje bazę danych, że funkcję agregującą (np. SUM, AVG, COUNT) należy traktować jako funkcję okna, obliczaną dla całego zestawu wyników („globalnego „okna”), ale stosowaną i zwracaną w każdym pojedynczym wierszu.
SELECT
order_id,
total_amount,
AVG(total_amount) OVER() AS global_average
FROM orders;W tym przykładzie zachowujemy każde indywidualne zamówienie, ale w każdym wierszu znajduje się także kolumna global_average ze średnią wszystkich zamówień. Bardzo przydatne, na przykład do pomiaru, jak bardzo zamówienie odbiega od średniej!
Wybierz kolumnę „cena” z tabeli „produkty”. Dodaj kolumnę o nazwie „global_max_price” zawierającą cenę maksymalną obliczoną za pomocą funkcji okna dla całej tabeli.
Pokaż wskazówkę
Użyj MAX(cena) w połączeniu z OVER().
Rozwiązanie dostępne po 3 próbach
Wyodrębnij „id”, „cenę” i dodaj ogólną średnią cenę („global_avg”) z tabeli „produkty”.
Pokaż wskazówkę
Po prostu dodaj AVG(cena) OVER().
Rozwiązanie dostępne po 3 próbach