Fensterfunktionen: OVER
Berechne über Zeilen hinweg, ohne sie zusammenzufassen. OVER legt fest, welche Zeilen betrachtet werden, ähnlich wie RANG und laufende Summen in Excel.
Syntax
ROW_NUMBER() OVER (ORDER BY column)RANK() OVER (ORDER BY column)SUM(column) OVER (PARTITION BY column ORDER BY column)
- PARTITION BY startet die Berechnung für jede Gruppe neu.
- Anders als bei GROUP BY bleibt jede Zeile im Ergebnis erhalten.
Beispiel
SELECT order_id, RANK() OVER (ORDER BY order_date) AS day_rank FROM orders;
Jede Bestellung mit ihrem Rang nach Datum. Bestellungen am selben Tag teilen sich einen Rang.
Verwendete Tabellen: orders. Probiere es unten in einer Lektion aus.
Häufige Fehler
- ROW_NUMBER vergibt jeder Zeile eine andere Nummer; RANK vergibt Gleichständen dieselbe Nummer und überspringt die folgenden.
- Fensterfunktionen laufen nach WHERE, daher kannst du ihre Ergebnisse nicht in WHERE verwenden. Umschließe die Abfrage mit einer Unterabfrage oder WITH, um sie zu filtern.