Saltar al contenido principal
eLearner.app
Módulo 13 · Lección 1 de 449/57 en el curso~15 min
Lecciones del módulo (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!

Ejercicio#sql.m13.l1.e1
Intentos: 0Cargando...

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.

Cargando editor...
Mostrar pista

Usa MAX(price) combinato a OVER().

Solución disponible después de 3 intentos

Ejercicio#sql.m13.l1.e2
Intentos: 0Cargando...

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

Cargando editor...
Mostrar pista

Basta aggiungere AVG(price) OVER().

Solución disponible después de 3 intentos