Menu
CoddyTech

PARTITION-BY-Kriterium

Teil des Abschnitts Grundlagen der SQL-Journey von Coddy. Lektion 59 von 72.

Eine weitere Option für die OVER ()-Klausel ist PARTITION BY

Damit können wir die Zeilen für jede Gruppe separat nummerieren 

Zum Beispiel:

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

Dadurch wird eine Spalte erzeugt, die die Zeilen jedes Typs separat in der Reihenfolge von id nummeriert (das Ergebnis unten ist nach Typ gruppiert):

idtyperow_num
92t11
132t12
198t13
52t21
154t31

id 92 hat row_num 1, weil es die kleinste id in type t1 ist.

Hinweis: ROW_NUMBER() erfordert eine ORDER BY-Klausel innerhalb von OVER(), um festzulegen, wie die Zeilen innerhalb jeder Partition nummeriert werden sollen.

Wir können sogar mehrere Spalten innerhalb von PARTITION BY angeben:

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

Aufgabe

Einfach

Verfügbare Tabellen und Spalten:

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

Eine Fabrik stellt Türen her. Sie muss die Türen für jede Kombination aus country und color nummerieren, deren publication_year kleiner als 2000 ist. Nenne diese Spalte row_num.

Die Türen sollen innerhalb jeder Gruppe in aufsteigender Reihenfolge nach ihrer id nummeriert werden. Türen ohne Spezifikationen sollen ignoriert werden. Sortiere das Endergebnis in aufsteigender Reihenfolge nach der id. 

Probier es selbst

quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen

Übe selbstständig: SQL-Playground