Vai al contenuto
eLearner.app
Modulo 13 · Lezione 1 di 449/57 nel corso~15 min
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.

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

Esercizio#sql.m13.l1.e1
Tentativi: 0Caricamento…

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.

Caricamento editor…
Mostra suggerimento

Usa MAX(price) combinato a OVER().

Soluzione disponibile dopo 3 tentativi

Esercizio#sql.m13.l1.e2
Tentativi: 0Caricamento…

Estrai 'id', 'price' e affiancagli il prezzo medio totale ('global_avg') dalla tabella 'products'.

Caricamento editor…
Mostra suggerimento

Basta aggiungere AVG(price) OVER().

Soluzione disponibile dopo 3 tentativi