Salt la conținutul principal
Modulul 13 · Lecția 2 din 450/57 în curs~15 min
Lecții din modul (2/4)

Gruparea cu PARTITION BY

Gruparea cu PARTITION BY

Este util să ai calcule globale pe fiecare rând, dar adesea nu este suficient. Este posibil să dorim să calculăm media pe categorie sau per client, păstrând în același timp detaliile originale pe fiecare rând.

Aici intervine PARTITION BY din clauza OVER(...).

Cum funcționează PARTITION BY

Conceptual se comportă similar cu GROUP BY, dar în loc să restrângă rândurile din rezultat, definește doar limita „fereastră” de date pe care funcția va funcționa pentru a calcula rezultatul pentru un singur rând.

SQL
SELECT
  product_name,
  category_id,
  price,
  AVG(price) OVER(PARTITION BY category_id) AS cat_avg_price
FROM products;

Fiecare rând de produse își păstrează propriile detalii, iar coloana cat_avg_price va afișa media limitată la produsele din aceeași categorie.

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

Din tabelul „produse”, extrageți „id”, „category_id” și „price”. Adăugați o coloană „category_total” care calculează SUMA „preț” pentru fiecare „category_id” folosind funcțiile ferestrei.

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

Folosiți SUM(preț) OVER(PARTITION BY categorie_id).

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

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

Din tabelul „reviews”, afișați „product_id”, „rating” și „avg_product_rating” (evaluarea medie împărțită în funcție de produs). Afișați toate rândurile.

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

Utilizați AVG(evaluare) și PARTITION BY product_id. Transmiteți-o în NUMERIC dacă este necesar.

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