CUME_DIST
Gibt den kumulierten Anteil zurück: welcher Teil der Zeilen der Partition nicht später als die aktuelle steht.
MySQL 8.1
CUME_DIST() OVER ([PARTITION BY ...] [ORDER BY ...])Parameter
- PARTITION BYoptional
- Spalten, nach denen die Zeilen in Partitionen aufgeteilt werden; der Anteil wird in jeder separat berechnet
- ORDER BYoptional
- Reihenfolge der Zeilen, nach der der Anteil berechnet wird; ohne sie bekommen alle Zeilen 1
Rückgabewert
Gleitkommazahl (DOUBLE) größer als 0 und höchstens 1
Beispiele
CUME_DIST und PERCENT_RANK nach Status
MySQL 8.1
SELECT member_name,
status,
CUME_DIST() OVER (
ORDER BY status
) AS status_cume_dist,
PERCENT_RANK() OVER (
ORDER BY status
) AS status_percent_rank
FROM FamilyMembers;Günstigstes Viertel der Waren
MySQL 8.1
SELECT name,
price
FROM (
SELECT name,
price,
CUME_DIST() OVER (
ORDER BY price
) AS share_cheaper_or_equal
FROM products
) AS t
WHERE share_cheaper_or_equal <= 0.25;Details
Der Wert ist die Anzahl der Zeilen, deren Wert in ORDER BY nicht größer als der aktuelle ist, geteilt durch die Anzahl der Zeilen in der Partition. Anders als bei PERCENT_RANK zählen die aktuelle Zeile und gleiche Zeilen zum Anteil, daher ist das Ergebnis nie 0 und bei der letzten Zeile 1. Die Bedingung CUME_DIST() <= 0.25 in der äußeren Abfrage wählt das erste Viertel der Zeilen aus.