unbounded
und current row
— nicht mit arithmetischer DistanzDie Over
-Klausel akzeptiert eine Range
-Rahmen, mit dem die Sichtweite der Fensterfunktion relativ zur aktuellen auf Basis einer Differenz der Sortierwerte eingeschränkt wird.
SELECT *, COUNT(*) OVER(ORDER BY val
RANGE BETWEEN 1 PRECEDING
AND CURRENT ROW)
FROM …
Liefert eine zusätzliche Spalte mit der Anzahl der Zeilen deren Sortierwert val
zwischen dem aktuellen um eins reduziert (1 preceding
) und dem der aktuellen Zeile liegt (current row
).
Für ein sinnvolle Rahmung benötigt man in der Over
-Klausel eine Order By
-Klausel. Beachte, dass diese Order By
-Klausel die Reihenfolge der Zeilen im Ergebnis nicht festlegt. Wenn man das Ergebnis in derselben Reihenfolge braucht, muss man auch noch eine entsprechende Order By
-Klausel auf der äußerste Abfrageebene verwenden.
Sub-Klauseln:
Die Over
-Klausel, inklusive Range Between
, ist als optionale Funktion T611, „Elementary OLAP operations“ in ISO/IEC 9075-2:2023 definiert.
20 Jahre SQL-Evolution kann man nicht an einem Tag nachholen. Abonniere den Newsletter via E-Mail, Bluesky oder RSS, um sukzessive aufzuholen und modern-sql.com am Radar zu behalten.
Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how