Die Over
-Klausel akzeptiert eine Rows
-Rahmung, welche die Sichtweite der Fensterfunktion auf eine Zeilenzahl vor und nach der aktuellen Zeile einschränkt.
SELECT *, COUNT(*) OVER(ORDER BY c1
ROWS BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW)
FROM …
Liefert eine zusätzliche Spalte, mit der Anzahl der Zeilen zwischen dem Anfang des Ergebnisses (entsprechend der Order By
-Klausel in Over
) und der aktuellen Zeile – analog zu Row_Number()
.
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:
Nicht-Standard: over(range between…)
(Zeichenketten, mehrere Spalten)
Die Over
-Klausel, inklusive Rows Between
, ist als Teil der 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