over(… groups between …)


BigQueryDb2 (LUW)DerbyH2MariaDBMySQLOracle DBPostgreSQLSQL ServerSQLite20152017201920212023✓ 3.28.0 - 3.50.0⊘ 3.5.7 - 3.26.0⊘ 2008R2 - 2022✓ 11 - 17⊘ 8.3 - 10✓ 21c - 23.9⊘ 11gR1 - 19c⊘ 5.0 - 9.4.0⊘ 5.1 - 12.0.2✓ 1.4.198 - 2.3.232⊘ 1.4.191 - 1.4.197⊘ 10.15.1.3 - 10.17.1.0⊘ 9.7 - 12.1.2⊘ 2.0

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).

ORDER BY valGROUPSBETWEEN 1 PRECEDINGgroups betwAND CURRENT ROWval11.5667current 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.

Normative Referenzen

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.

Über den Autor

Foto von Markus Winand

Markus Winand gibt auf modern-sql.com Einblick in SQL und zeigt, wie es von verschiedenen Systemen unterstützt wird. Zuvor machte er use-the-index-luke.com, was er noch immer wartet. Markus kann als Trainer, Sprecher und Berater auf winand.at engagiert werden.

Sein Buch kaufen

Titelbild von „SQL Performance Explained“: Eichhörnchen läuft durchs Grass

Die Essenz: SQL-Tuning auf 200 Seiten

Jetzt Kaufen
(Taschenbuch und/oder PDF)

Sein Training

Markus verwandelt veraltetes SQL-92-Wissen in solides und zeitgemäßes SQL-Know-how

Erfahren Sie mehr»

Neuigkeiten Abonnieren

Markus Winands MailinglistenMarkus Winands RSS-FeedMarkus Winand auf LinkedInMarkus Winand auf XINGMarkus Winand auf TwitterMarkus Winand auf Bluesky
Copyright 2015-2025 Markus Winand. Alle Rechte vorbehalten.
Impressum | Kontakt | KEINE GEWÄHR | Handelsmarken | Datenschutz und DSGVO