Lezioni del modulo (1/4)
Introduzione e Clausola OVER
Introduzione e Clausola OVER
Nelle lezioni precedenti abbiamo visto come usare GROUP BY per aggregare i dati. Tuttavia, il GROUP BY ha un limite enorme: collassa le righe. Se raggruppi per città, ottieni una sola riga per città e perdi i dettagli dei singoli clienti.
Qui entrano in gioco le Window Functions (Funzioni Finestra). Esse permettono di eseguire calcoli aggregati (come somme o medie) mantenendo le righe originali.
La clausola OVER()
La parola chiave magica è OVER(). Indica al database che la funzione aggregata (es. SUM, AVG, COUNT) deve essere trattata come una funzione finestra, calcolata sull'intero insieme dei risultati (la "finestra" globale) ma applicata e restituita su ogni singola riga.
SELECT
order_id,
total_amount,
AVG(total_amount) OVER() AS global_average
FROM orders;In questo esempio, manteniamo tutti i singoli ordini, ma in ogni riga avremo anche una colonna global_average con la media di tutti gli ordini. Molto utile per calcolare ad esempio quanto un ordine si discosta dalla media!
Seleziona la colonna 'price' dalla tabella 'products'. Aggiungi una colonna chiamata 'global_max_price' che contiene il prezzo massimo calcolato tramite una funzione finestra sull'intera tabella.
Mostra suggerimento
Usa MAX(price) combinato a OVER().
Soluzione disponibile dopo 3 tentativi
Estrai 'id', 'price' e affiancagli il prezzo medio totale ('global_avg') dalla tabella 'products'.
Mostra suggerimento
Basta aggiungere AVG(price) OVER().
Soluzione disponibile dopo 3 tentativi