RANK
Gibt den Rang einer Zeile in der Fensterpartition zurück, also ihren Platz in der Reihenfolge von ORDER BY.
PostgreSQL 17.9
RANK()Rückgabewert
Ganze Zahl (bigint), der Platz der Zeile; gleiche Werte teilen sich einen Platz, die folgenden Plätze werden übersprungen: 1, 2, 2, 4
Beispiele
Rang nach Status mit Lücken
PostgreSQL 17.9
SELECT member_name,
status,
RANK() OVER (
ORDER BY status
) AS status_rank
FROM FamilyMembers;Preisplätze je Familienmitglied
PostgreSQL 17.9
SELECT family_member,
unit_price,
RANK() OVER (
PARTITION BY family_member
ORDER BY unit_price DESC
) AS price_rank
FROM Payments
ORDER BY family_member,
price_rank;Details
Ohne ORDER BY bekommt jede Zeile der Partition den Rang 1. Fensterfunktionen funktionieren nicht in WHERE: Um die ersten Plätze auszuwählen, berechnest du den Rang in einer Unterabfrage und filterst in der äußeren Abfrage.