Passer au contenu principal
eLearner.app
Module 13 · Leçon 2 sur 450/57 dans le cours~15 min
Leçons du module (2/4)

Raggruppamenti con PARTITION BY

Raggruppamenti con PARTITION BY

Avere calcoli globali in ogni riga è comodo, ma spesso non basta. Potremmo voler calcolare la media per categoria o per cliente, mantenendo in ogni riga il dettaglio originale.

È qui che subentra PARTITION BY dentro alla clausola OVER(...).

Come funziona PARTITION BY

Si comporta in modo concettualmente simile a GROUP BY, ma invece di collassare le righe nel risultato, definisce solo il confine della "finestra" di dati su cui la funzione opererà per calcolare il risultato della singola riga.

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

Ogni riga di prodotto manterrà le sue peculiarità, e la colonna cat_avg_price mostrerà la media limitata ai prodotti della sua stessa categoria.

Exercice#sql.m13.l2.e1
Tentatives : 0Chargement…

Dalla tabella 'products', estrai 'id', 'category_id' e 'price'. Aggiungi una colonna 'category_total' calcolando la SOMMA di 'price' per ogni 'category_id' usando le funzioni finestra.

Chargement de l'éditeur…
Afficher l'indice

Usa SUM(price) OVER(PARTITION BY category_id).

Solution disponible après 3 tentatives

Exercice#sql.m13.l2.e2
Tentatives : 0Chargement…

Dalla tabella 'reviews', mostra 'product_id', 'rating' e il 'avg_product_rating' (la media dei rating partizionata per prodotto). Mostra tutti.

Chargement de l'éditeur…
Afficher l'indice

Usa AVG(rating) e PARTITION BY product_id. Castalo a NUMERIC se serve.

Solution disponible après 3 tentatives