Lecții din modul (1/4)
Introducere și clauza OVER
Introducere și Clauza OVER
În lecțiile anterioare, am văzut cum să folosim GROUP BY pentru a agrega date. Cu toate acestea, GROUP BY are o limitare imensă: reduce rândurile. Dacă grupați după oraș, obțineți un singur rând pe oraș și pierdeți detaliile clienților individuali.
Aici intră în joc Funcțiile ferestrei. Vă permit să efectuați calcule agregate (cum ar fi sume sau medii) în timp ce păstrați rândurile originale.
Clauza OVER().
Cuvântul cheie magic este OVER(). Acesta spune bazei de date că funcția agregată (de exemplu, SUM, AVG, COUNT) ar trebui să fie tratată ca o funcție de fereastră, calculată pe întregul set de rezultate („fereastra globală”), dar aplicată și returnată pe fiecare rând.
SELECT
order_id,
total_amount,
AVG(total_amount) OVER() AS global_average
FROM orders;În acest exemplu, păstrăm fiecare comandă individuală, dar fiecare rând are și o coloană global_average cu media a tuturor comenzilor. Foarte util, de exemplu, pentru a măsura cât de mult se abate o comandă de la medie!
Selectați coloana „preț” din tabelul „produse”. Adăugați o coloană numită „global_max_price” care conține prețul maxim calculat cu o funcție de fereastră pe întregul tabel.
Afișează indiciu
Folosiți MAX(preț) combinat cu OVER().
Soluție disponibilă după 3 încercări
Extrageți „id”, „preț” și adăugați prețul mediu general („global_avg”) din tabelul „produse”.
Afișează indiciu
Doar adăugați AVG(preț) OVER().
Soluție disponibilă după 3 încercări