SQL Academy
Premium
Funktionsreferenz

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;
member_namestatusstatus_rank
Wednesday Addamsdaughter1
Lela Quinceydaughter1
Annie Quinceydaughter1
Headley Quinceyfather4
Ernest Forrestfather4
Constance Forrestmother6
Flavia Quinceymother6
Andie Quinceyson8

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;
family_memberunit_priceprice_rank
1100001
120002
13003
1104
185
185
177
177
2660001
255002

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.

Siehe auch

Wo du es lernst