Menu
Coddy logo textTech

Criterio ROWS e RANGE

Lezione 12 di 13 del corso SQL avanzato di Coddy.

Al momento, non possiamo essere flessibili nello scegliere quante righe precedenti o successive prendere in considerazione. Ora è possibile con i criteri ROWS & RANGE. Per usarli scriviamo:

OVER (ROWS BETWEEN --START-- AND --END--)

OVER (RANGE BETWEEN --START-- AND --END--)

E possiamo specificare le seguenti opzioni:

  • CURRENT ROW - la riga corrente
  • n PRECEDING - righe precedenti alla riga corrente
  • n FOLLOWING - righe successive alla riga corrente 

La differenza tra ROWS & RANGE è che il criterio ROWS non tiene conto dei valori, ma solo delle posizioni, mentre RANGE definisce la finestra in termini di intervalli di valori invece che di posizioni delle righe.

Per RANGE dobbiamo specificare ORDER BY --column_name--, perché altrimenti non saprebbe come scegliere la finestra.

Per esempio:

ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING

Qui crea una finestra che include la riga corrente, la riga precedente e quella successiva.

 

RANGE BETWEEN 1 PRECEDING AND 1 FOLLOWING ORDER BY levels

Qui crea una finestra che include, per ogni livello (ordinato in ordine crescente), il livello corrente, un livello precedente e uno successivo. Se il livello corrente è 5, includerà i livelli 4, 5 e 6.

Nota: L'uso di RANGE BETWEEN potrebbe comportare l'inclusione di più righe nella finestra, perché include tutte le righe che condividono gli stessi valori di quelle nell'intervallo, mentre ROWS BETWEEN includerà sempre lo stesso numero di righe (se disponibili nel set di dati). 

Inoltre, RANGE non supporta le colonne di date.

challenge icon

Sfida

Facile

Per questa sfida, abbiamo dei giornali da produrre. Vorremmo conoscere il numero medio di giornali stampati nei due giorni precedenti la riga corrente e nel giorno successivo. Inoltre, vorremmo conoscere la differenza tra il numero massimo e minimo di giornali stampati dalla data corrente e nei tre giorni precedenti. Chiama queste colonne rispettivamente avg_newspapers e diff_newspapers.

Provalo tu

Tutte le lezioni di SQL avanzato

Esercitati da solo: Compilatore Python online