over(… rows between …)


BigQueryDb2 (LUW)DerbyH2MariaDBMySQLOracle DBPostgreSQLSQL ServerSQLite200720092011201320152017201920212023✓ 3.25.0 - 3.50.0⊘ 3.5.7 - 3.23.1✓ 2012 - 2022⊘ 2008R2✓ 9.0 - 17⚠ 8.4⊘ 8.3✓ 11gR1 - 23.9✓ 8.0.33 - 9.4.0⚠ 8.0.32✓ 8.0.11 - 8.0.31⊘ 5.0 - 5.7✓ 10.2 - 12.0.2⊘ 5.1 - 10.1✓ 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 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.

Normative Referenzen

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.

Ü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