// data & ai · giornale tecnico MILANO ● LIVE 00:00:00

Cinque window functions SQL che servono davvero nelle operations

ROW_NUMBER, SUM, AVG, LEAD/LAG e DENSE_RANK: a cosa servono le window functions e quando usarle nel lavoro analitico quotidiano.

Le window functions (o analytics functions) sono uno di quei concetti SQL che separano chi sa estrarre dati da chi sa costruire analisi. Il punto di partenza è capire come differiscono dalle aggregate function.

Aggregate vs window

Una window function restituisce valori aggregati come SUM(), COUNT() o MAX(), ma non collassa il result set: il numero di righe in output è uguale a quello in input. L’anatomia base ha tre parti: la funzione di aggregazione, la clausola PARTITION BY (concettualmente una GROUP BY che non raggruppa le righe) e ORDER BY, che conta quando l’ordine dell’output è rilevante.

Le cinque funzioni

  • ROW_NUMBER() assegna un numero progressivo a ogni riga, partendo da 1. Utile per isolare il primo o l’ultimo record: PARTITION BY cliente, ORDER BY data d’acquisto, poi filtra WHERE row number = 1 per la prima transazione di ciascun cliente.
  • SUM() usata come window function calcola somme cumulate: perfetta per grafici che mostrano la crescita di una metrica (ordini, ricavi) nel tempo.
  • AVG() abilita le moving average: ad esempio la media mobile a 5 giorni delle vendite, o la spesa media dei clienti.
  • LEAD() / LAG() confrontano il valore di righe successive o precedenti. Sono lo strumento naturale per confrontare un periodo con quello precedente: ricavi mese su mese, crescita percentuale delle iscrizioni, variazione del churn.
  • DENSE_RANK() è simile a ROW_NUMBER(), ma assegna lo stesso rank ai valori uguali: la scelta giusta per classifiche, come i top cliente per fatturato totale.

Perché conta

Questi cinque pattern coprono gran parte del lavoro analitico ricorrente nelle operations: primo/ultimo evento, cumulati, medie mobili, delta tra periodi e ranking. Non esauriscono le window functions, ma sono il set che porta più lontano con lo sforzo minore, ed evitano subquery e join contorti per calcoli che dovrebbero essere semplici.

In sintesi

  • Le window functions aggregano senza collassare le righe: stesso numero di righe in input e in output.
  • PARTITION BY e ORDER BY governano il comportamento; padroneggiarli è la parte concettuale chiave.
  • ROW_NUMBER, SUM, AVG, LEAD/LAG e DENSE_RANK coprono la maggior parte dei casi d’uso operativi.

Fonte: Essential SQL window functions for business operations — https://www.fivetran.com/blog/5-essential-sql-window-functions-for-business-operations

Condividi X Facebook LinkedIn WhatsApp Email

// scritto da

Fernando

Hai qualcosa da aggiungere? Unisciti alla discussione.

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Altri dell'autore

dalla stessa firma