SQL Academy
Premium
Funktionsreferenz

PERCENT_RANK

Gibt den relativen Rang einer Zeile in der Fensterpartition zurück: den Anteil der Zeilen vor ihr, von 0 bis 1.

PostgreSQL 17.5
PERCENT_RANK() OVER ([PARTITION BY ...] [ORDER BY ...])

Parameter

PARTITION BYoptional
Spalten, nach denen die Zeilen in Partitionen aufgeteilt werden; die Ränge werden in jeder separat berechnet
ORDER BYoptional
Reihenfolge der Zeilen, die den Rang bestimmt

Rückgabewert

Gleitkommazahl (double precision) von 0 bis 1

Beispiele

Relativer Rang nach Geburtsdatum

PostgreSQL 17.5
SELECT member_name,
	birthday,
	PERCENT_RANK() OVER (
		ORDER BY birthday
	) AS pct_rank
FROM FamilyMembers;
member_namebirthdaypct_rank
Headley Quincey1960-05-130
Ernest Forrest1961-09-110.14285714285714285
Flavia Quincey1963-02-160.2857142857142857
Constance Forrest1968-09-060.42857142857142855
Andie Quincey1983-06-050.5714285714285714
Lela Quincey1985-06-070.7142857142857143
Annie Quincey1988-04-100.8571428571428571
Wednesday Addams2005-01-131

RANK und PERCENT_RANK für Preise

PostgreSQL 17.5
SELECT unit_price,
	RANK() OVER (
		ORDER BY unit_price
	) AS price_rank,
	ROUND(
		PERCENT_RANK() OVER (
			ORDER BY unit_price
		)::numeric,
		2
	) AS pct_rank
FROM Payments
ORDER BY unit_price;
unit_priceprice_rankpct_rank
710.00
710.00
830.07
830.07
830.07
1060.19
1670.22
2080.26
5990.30
100100.33

Details

Berechnet wird (RANK − 1) / (Anzahl der Zeilen in der Partition − 1). Gleiche Werte bekommen denselben Rang. Bei einer Partition aus einer Zeile ist das Ergebnis 0.

Siehe auch