Die Over
-Klausel kennt die Groups
-Rahmung, welche die Sichtweite der Fensterfunktion auf Basis der Anzahl der verschiedenen Werte relativ zur aktuellen Zeile einschränkt.
SELECT *, COUNT(*) OVER(ORDER BY val
GROUPS BETWEEN 1 PRECEDING
AND CURRENT ROW)
FROM …
Der Groups-Rahmen spezifiziert jene Zeilen die entsprechend der Order By-Klausel zwischen einen anderen Wert davor liegen (1 preceding
) und allen Zeilen mit dem Sortierschlüssel der aktuellen Zeile liegen (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:
Nicht-Standard Varianten: over(range between…)
(Zeichenketten, mehrere Spalten)
Die Groups
-Rahmung ist als optionale Funktion T620, „WINDOW
clause: GROUPS
option“ 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