Salt la conținutul principal
Modulul 13 · Lecția 1 din 449/57 în curs~15 min
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.

SQL
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!

Exercițiu#sql.m13.l1.e1
Încercări: 0Se încarcă…

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.

Se încarcă editorul...
Afișează indiciu

Folosiți MAX(preț) combinat cu OVER().

Soluție disponibilă după 3 încercări

Exercițiu#sql.m13.l1.e2
Încercări: 0Se încarcă…

Extrageți „id”, „preț” și adăugați prețul mediu general („global_avg”) din tabelul „produse”.

Se încarcă editorul...
Afișează indiciu

Doar adăugați AVG(preț) OVER().

Soluție disponibilă după 3 încercări