🪟Window Functions (Fensterfunktionen)

funktion() OVER (PARTITION BY … ORDER BY … Rahmen) rechnet für jede Zeile über ein „Fenster“ benachbarter Zeilen – Ranglisten, laufende Summen, gleitende Durchschnitte, Vergleich mit der Vorzeile.

Zeile anklicken → ihr Fensterrahmen wird markiert (die Zeilen, aus denen der Wert berechnet wird).

namerollegehaltrang
Ida RothGeschäftsführung62001
Karl MehlFilialleitung43002
Lena FuchsEinkauf39003
Max BrandtVerkauf31004
Nora WolfVerkauf31004
Otto SauerLager28006
SELECT name, rolle, gehalt,
       RANK() OVER (ORDER BY gehalt DESC) AS rang
FROM mitarbeiter
ORDER BY gehalt DESC

RANK vergibt bei Gleichstand denselben Rang und überspringt danach Plätze (1, 2, 3, 4, 4, 6) – wie bei Olympia.

Anders als GROUP BY behalten Fensterfunktionen alle Zeilen – jede bekommt nur eine zusätzliche Spalte. Sie werden nach WHERE/GROUP BY/HAVING und vor ORDER BY berechnet.

🧩Die drei Teile von OVER (…)

💡 PARTITION BY
Teilt die Zeilen in unabhängige Fenster (wie GROUP BY, aber ohne Zusammenfassen). Ohne PARTITION BY ist die ganze Ergebnismenge ein Fenster.
💡 ORDER BY
Reihenfolge innerhalb der Partition – nötig für Ränge und laufende Summen. Unabhängig vom ORDER BY der Abfrage.
💡 Rahmen (Frame)
ROWS zählt physische Zeilen, RANGE arbeitet mit Werten (gleiche Werte = Peers gehören zusammen). Standard mit ORDER BY: RANGE BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW.

🧪Ausprobieren

SQL-Engine wird geladen …