Menu
Coddy logo textTech

Criterio PARTITION BY

Fa parte della sezione Fondamenti del percorso SQL di Coddy. Lezione 59 di 72.

Un'altra opzione per la clausola OVER () è PARTITION BY

Ci consente di numerare separatamente le righe di ogni gruppo 

Per esempio:

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

Questo genererà una colonna che numera separatamente le righe di ciascun tipo, in ordine di id (il risultato qui sotto è raggruppato per tipo):

idtyperow_num
92t11
132t12
198t13
52t21
154t31

id 92 ha row_num 1 perché è il più piccolo id in type t1.

Nota: ROW_NUMBER() richiede una clausola ORDER BY all'interno di OVER() per determinare come numerare le righe all'interno di ogni partizione.

Possiamo persino specificare più colonne all'interno di PARTITION BY:

ROW_NUMBER() OVER (PARTITION BY type, hue ORDER BY id)
challenge icon

Sfida

Facile

Tabelle e colonne disponibili:

  • doors: id, publication_year
  • doors_specs: id, country, color

Una fabbrica sta costruendo porte. Deve numerare le porte per ogni combinazione di country e color che abbia un publication_year inferiore a 2000. Chiama questa colonna row_num.

Le porte devono essere numerate all'interno di ciascun gruppo in ordine crescente in base al loro id. Le porte senza specifiche devono essere ignorate. Ordina il risultato finale in ordine crescente in base all'id. 

Provalo tu

quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Playground SQL