SQL Academy
Premium
Funktionsreferenz

PERCENTILE_CONT

Gibt ein Perzentil zurück, also den Wert, unter dem der angegebene Anteil der Gruppenwerte liegt; zwischen benachbarten Werten berechnet es einen Zwischenwert.

PostgreSQL 17.5
PERCENTILE_CONT(fraction) WITHIN GROUP (ORDER BY expression)

Parameter

fractiondouble precision
Anteil von 0 bis 1, zum Beispiel 0.5 für den Median; auch ein Array von Anteilen ist möglich
expressiondouble precision | interval
Numerischer Ausdruck oder Intervall, nach dem die Werte sortiert werden

Rückgabewert

Zahl (double precision) oder Intervall; ein Array, wenn fraction ein Array ist; NULL bei leerer Menge

Beispiele

Median und Durchschnittspreis

PostgreSQL 17.5
SELECT PERCENTILE_CONT(0.5) WITHIN GROUP (
		ORDER BY unit_price
	) AS median,
	AVG(unit_price) AS average
FROM Payments;
medianaverage
1503231.1785714285714286

Medianpreis je Familienmitglied

PostgreSQL 17.5
SELECT family_member,
	PERCENTILE_CONT(0.5) WITHIN GROUP (
		ORDER BY unit_price
	) AS median_price
FROM Payments
GROUP BY family_member
ORDER BY family_member;
family_membermedian_price
19
2150
3100
4250
5230

Quartile in einem Aufruf

PostgreSQL 17.5
SELECT PERCENTILE_CONT(ARRAY [0.25, 0.5, 0.75]) WITHIN GROUP (
		ORDER BY unit_price
	) AS quartiles
FROM Payments;
quartiles
19150312.5

Details

Die Funktion hat eine besondere Schreibweise: Der Ausdruck steht nicht in den Klammern, sondern in WITHIN GROUP (ORDER BY ...). NULL-Werte werden ignoriert.

Fällt die Position zwischen zwei Werte, wird das Ergebnis zwischen ihnen berechnet: Für 1, 2, 3 und 10 ist der Median 2.5. Um einen der vorhandenen Werte zu bekommen, verwende PERCENTILE_DISC. Anders als AVG hängt der Median kaum von seltenen sehr großen Werten ab.

Siehe auch