Lecciones del módulo (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.
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.
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.
Mostrar pista
Usa SUM(price) OVER(PARTITION BY category_id).
Solución disponible después de 3 intentos
Dalla tabella 'reviews', mostra 'product_id', 'rating' e il 'avg_product_rating' (la media dei rating partizionata per prodotto). Mostra tutti.
Mostrar pista
Usa AVG(rating) e PARTITION BY product_id. Castalo a NUMERIC se serve.
Solución disponible después de 3 intentos