Funzioni finestra: OVER

Calcola attraverso le righe senza raggrupparle. OVER indica quali righe guardare, come RANK e i totali progressivi in Excel.

Sintassi

ROW_NUMBER() OVER (ORDER BY column)
RANK() OVER (ORDER BY column)
SUM(column) OVER (PARTITION BY column ORDER BY column)
  • PARTITION BY riavvia il calcolo per ogni gruppo.
  • A differenza di GROUP BY, ogni riga resta nel risultato.

Esempio

SELECT order_id, RANK() OVER (ORDER BY order_date) AS day_rank FROM orders;

Ogni ordine con il suo rango per data. Gli ordini dello stesso giorno condividono un rango.

Tabelle usate: orders. Provalo in una lezione qui sotto.

Errori comuni

  • ROW_NUMBER assegna un numero diverso a ogni riga; RANK assegna lo stesso numero ai pari merito e salta i successivi.
  • Le funzioni finestra vengono eseguite dopo WHERE, quindi non si possono usare i loro risultati in WHERE. Racchiudi la query in una sottoquery o in un WITH per filtrarli.

Esercitati