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.9
PERCENTILE_CONT(fraction) WITHIN GROUP (ORDER BY expression)
fraction
Anteil von 0 bis 1, zum Beispiel 0.5 für den Median; auch ein Array von Anteilen ist möglich
double precision
expression
Numerischer Ausdruck oder Intervall, nach dem die Werte sortiert werden
double precision | interval

Rückgabewert

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

Beispiele

Median und Durchschnittspreis

PostgreSQL 17.9
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.9
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.9
SELECT PERCENTILE_CONT(ARRAY [0.25, 0.5, 0.75]) WITHIN GROUP (
		ORDER BY unit_price
	) AS quartiles
FROM Payments;
quartiles
[19,150,312.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