lezione 07

window functions

analisi avanzata senza perdere righe con OVER e PARTITION.

livello: intermedio durata: 40 min output: query analitiche badge: window analytics

overview

le window functions calcolano aggregazioni senza collassare le righe, ideali per ranking e trend.

over e partition

select
  user_id,
  amount,
  sum(amount) over (partition by user_id) as total_spent
from orders;

ranking

select
  user_id,
  amount,
  row_number() over (order by amount desc) as rn
from orders;

usa dense_rank per evitare buchi nei ranking.

lag/lead

select
  day,
  revenue,
  lag(revenue) over (order by day) as prev_day
from daily_kpi;

frame windows

select
  day,
  revenue,
  avg(revenue) over (
    order by day
    rows between 6 preceding and current row
  ) as rolling_avg
from daily_kpi;

checklist finale

  • usa partition per separare segmenti.
  • controlla ranking con dense_rank.
  • imposta frame per rolling metrics.
  • testa performance con explain.

panoramica

In questo capitolo su window functions, analisi avanzata senza perdere righe con OVER e PARTITION. L'obiettivo è trasformare i concetti in micro-pattern riutilizzabili con esempi piccoli e verificabili.

Lavora in sequenza: leggi, prova, modifica gli snippet e annota i trade-off principali (performance, leggibilità, manutenzione).

badge: window analytics

obiettivi

  • capire e applicare overview in uno scenario reale
  • capire e applicare over e partition in uno scenario reale
  • capire e applicare ranking in uno scenario reale
  • capire e applicare lag/lead in uno scenario reale

scheda rapida

SELECT categoria, COUNT(*) AS tot
FROM prodotti
WHERE attivo = TRUE
GROUP BY categoria
ORDER BY tot DESC
LIMIT 5;

Adatta questo scheletro agli esempi della lezione e sostituisci i dati con il tuo dominio.

tips

  • usa alias chiari
  • filtra presto con WHERE
  • controlla i piani di esecuzione
  • partiziona con PARTITION BY
  • ordina con ORDER BY
  • usa ROWS BETWEEN

tip: Le window function leggono meglio di self-join complessi.

mini progetto

Classifica vendite con ranking.

  • calcola rank per cliente
  • aggiungi running total
  • filtra i top
  • verifica output

output atteso: uno script o query ripetibile con risultati verificabili.

start a brief