Qualify-Klausel (Fensterfunktionen)


BigQueryDb2 (LUW)DerbyH2MariaDBMySQLOracle DBPostgreSQLSQL ServerSQLite20152017201920212023⊘ 3.25.0 - 3.50.0⊘ 2008R2 - 2022⊘ 8.4 - 18⊘ 11gR1 - 23.9⊘ 8.0.11 - 9.4.0⊘ 10.2 - 12.0.2✓ 1.4.198 - 2.4.240⊘ 9.7 - 12.1.2✓ 2.0⊘ 2.0

Weder die Where- noch die Having-Klausel akzeptieren Fensterfunktionen – die Qualify-Klausel jedoch schon.

 SELECT *
   FROM …
QUALIFY ROW_NUMBER() OVER(PARTITION BY … ORDER BY …) <= 3

Das Beispiel zeigt eine Top-N-pro-Gruppe-Abfrage: Sie liefert die erste drei Zeilen jeder Partition.

Eine besser unterstützte Syntax für diese Abfrage ermittelt die Fensterfunktion in einer Unterabfrage und wählt die passenden Zeilen in der äußeren Where-Klausel aus.

SELECT *
  FROM (SELECT *
             , ROW_NUMBER() OVER(PARTITION BY … ORDER BY …) AS rn
          FROM …
       ) AS sq
 WHERE sq.rn <= 3

Beachte, dass diese Abfrage die Extra-Spalte rn liefert.

Normative Referenzen

Die Qualify-Klausel ist nicht im internationalen SQL-Standard ISO/IEC 9075-2:2023.

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