Menu
CoddyTech

Kryterium PARTITION BY

Część sekcji Podstawy ścieżki SQL w Coddy. Lekcja 59 z 72.

Inną opcją dla klauzuli OVER () jest PARTITION BY

Pozwala nam osobno numerować wiersze w każdej grupie 

Na przykład:

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

To utworzy kolumnę, która numeruje wiersze każdego typu osobno, w kolejności id (poniżej wynik jest pogrupowany według typu):

idtyperow_num
92t11
132t12
198t13
52t21
154t31

id 92 ma row_num równe 1, ponieważ jest najmniejszym id w type t1.

Uwaga: ORDER BY wewnątrz OVER() jest opcjonalne. Bez niego wiersze każdej partycji nadal otrzymują numery, ale kolejność nie jest gwarantowana.

Możemy nawet określić wiele kolumn w klauzuli PARTITION BY:

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

Wyzwanie

Łatwy

Dostępne tabele i kolumny:

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

Fabryka produkuje drzwi. Musi ponumerować drzwi dla każdej kombinacji country i color, których publication_year jest mniejszy niż 2000. Nazwij tę kolumnę row_num.

Drzwi powinny być numerowane w każdej grupie w kolejności rosnącej według ich id. Drzwi bez specyfikacji powinny zostać pominięte. Posortuj wynik końcowy w kolejności rosnącej według id. 

Spróbuj swoich sił

quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Edytor online SQL