Menu
Coddy logo textTech

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:

idtype
132t1
52t2
92t1
154t3
198t1
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type) as row_num
FROM table1

Questo genererà una colonna che numererà ciascun tipo al suo interno:

idtyperow_num
132t11
52t21
92t12
154t31
198t13

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 table1

Questo numererà le righe in ordine crescente in base all'id di ciascun tipo:

idtyperow_num
132t12
52t21
92t11
154t31
198t13

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)
challenge icon

Sfida

Facile

Una 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

Esercitati da solo: Compilatore Python online