Kryterium PARTITION BY
Lekcja 5 z 13 w kursie SQL dla zaawansowanych w Coddy.
Inną opcją w klauzuli OVER () jest PARTITION BY
Pozwala nam numerować wiersze osobno dla każdej grupy
Na przykład:
| 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 table1Utworzy to kolumnę, która ponumeruje wiersze w ramach każdego typu:
| id | type | row_num |
| 132 | t1 | 1 |
| 52 | t2 | 1 |
| 92 | t1 | 2 |
| 154 | t3 | 1 |
| 198 | t1 | 3 |
id 92 ma row_num 2, ponieważ jest drugim wierszem typu type t1
Możemy też połączyć PARTITION BY z ORDER BY:
SELECT id, type, ROW_NUMBER() OVER (PARTITION BY type ORDER BY id) as row_num
FROM table1To ponumeruje wiersze w kolejności rosnącej według identyfikatora w ramach każdego typu:
| id | type | row_num |
| 132 | t1 | 2 |
| 52 | t2 | 1 |
| 92 | t1 | 1 |
| 154 | t3 | 1 |
| 198 | t1 | 3 |
Teraz id 132 ma row_num 2, ponieważ jest większe niż 92 i mniejsze niż 198.
Możemy nawet określić kilka kolumn w PARTITION BY:
ROW_NUMBER() OVER (PARTITION BY type, hue)Wyzwanie
ŁatwyFabryka produkuje drzwi. Musi ponumerować drzwi dla każdego country i color, których publication_year jest wcześniejszy niż 2000. Nazwij tę kolumnę row_num.
Drzwi bez specyfikacji należy pominąć. Posortuj wynik rosnąco według id.
Spróbuj swoich sił
Wszystkie lekcje w sekcji SQL dla zaawansowanych
4Podsumowanie
Wyzwanie końcowe #12Funkcje okna — część 1
Funkcja ROW_NUMBERKryterium ORDER BYKryterium PARTITION BYFunkcje LEAD i LAGWyzwanie powtórkowe nr 1Wyzwanie powtórkowe nr 2Poćwicz samodzielnie: Kompilator Python online