SQL Academy
Premium
Funktionsreferenz

CUME_DIST

Gibt den Anteil der Zeilen der Fensterpartition zurück, die vor der aktuellen Zeile oder zusammen mit ihr kommen, von 0 bis 1.

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

Parameter

PARTITION BYoptional
Spalten, nach denen die Zeilen in Partitionen aufgeteilt werden; die Anteile werden in jeder separat berechnet
ORDER BYoptional
Reihenfolge der Zeilen, nach der der Anteil berechnet wird

Rückgabewert

Gleitkommazahl (double precision) größer als 0 und bis 1

Beispiele

PERCENT_RANK und CUME_DIST

PostgreSQL 17.5
SELECT unit_price,
	ROUND(
		PERCENT_RANK() OVER (
			ORDER BY unit_price
		)::numeric,
		3
	) AS pct_rank,
	ROUND(
		CUME_DIST() OVER (
			ORDER BY unit_price
		)::numeric,
		3
	) AS cume_dist
FROM Payments
ORDER BY unit_price;
unit_pricepct_rankcume_dist
70.0000.071
70.0000.071
80.0740.179
80.0740.179
80.0740.179
100.1850.214
160.2220.250
200.2590.286
590.2960.321
1000.3330.393

Anteil der Zahlungen, die nicht teurer sind

PostgreSQL 17.5
SELECT family_member,
	unit_price,
	ROUND(
		CUME_DIST() OVER (
			PARTITION BY family_member
			ORDER BY unit_price
		)::numeric,
		2
	) AS share_not_more
FROM Payments
ORDER BY family_member,
	unit_price;
family_memberunit_priceshare_not_more
170.25
170.25
180.50
180.50
1100.63
13000.75
120000.88
1100001.00
280.14
21200.29

Details

Berechnet wird die Anzahl der Zeilen mit einem ORDER BY-Wert, der nicht größer als der aktuelle ist, geteilt durch die Anzahl der Zeilen in der Partition. Anders als bei PERCENT_RANK ist das Ergebnis nie 0, und für die letzte Zeile ist es immer 1.

Siehe auch