Criterio PARTITION BY
Lezione 5 di 13 del corso SQL avanzato di Coddy.
Un'altra opzione per le opzioni di OVER () è PARTITION BY
Ci permette di numerare separatamente le righe di ciascun gruppo
Per esempio:
| id | type |
| 132 | t1 |
| 52 | t2 |
| 92 | t1 |
| 154 | t3 |
| 198 | t1 |
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type) as row_num
FROM table1Questo genererà una colonna che numererà ciascun tipo al suo interno:
| id | type | row_num |
| 132 | t1 | 1 |
| 52 | t2 | 1 |
| 92 | t1 | 2 |
| 154 | t3 | 1 |
| 198 | t1 | 3 |
id 92 ha row_num 2 perché è la seconda riga di type t1
Possiamo anche combinare PARTITION BY con ORDER BY:
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type ORDER BY id) as row_num
FROM table1Questo numererà le righe in ordine crescente in base all'id di ciascun tipo:
| id | type | row_num |
| 132 | t1 | 2 |
| 52 | t2 | 1 |
| 92 | t1 | 1 |
| 154 | t3 | 1 |
| 198 | t1 | 3 |
Ora id 132 ha row_num 2 perché è maggiore di 92 e minore di 198.
Possiamo persino specificare più colonne all'interno di PARTITION BY:
ROW_NUMBER() OVER (PARTITION BY type, hue)Sfida
FacileUna fabbrica sta costruendo porte. Deve numerare le porte per ogni country e color il cui publication_year è precedente al 2000. Chiama questa colonna row_num.
Le porte senza specifiche devono essere ignorate. Ordina il risultato in ordine crescente in base a id.
Provalo tu
Tutte le lezioni di SQL avanzato
4Riepilogo
Sfida finale #12Funzioni finestra parte 1
Funzione ROW_NUMBERCriterio ORDER BYCriterio PARTITION BYFunzioni LEAD e LAGSfida di ripasso #1Sfida di ripasso #23Funzioni finestra, parte 2
Funzioni RANK e DENSE_RANKFunzione NTILEFunzioni di aggregazioneCriterio ROWS e RANGEEsercitati da solo: Compilatore Python online