Referencia de funciones

CUME_DIST

Devuelve la distribución acumulada: qué parte de las filas de la partición no va después de la actual.

MySQL 8.4
CUME_DIST()

Valor devuelto

Número de coma flotante (DOUBLE) mayor que 0 y como máximo 1

Ejemplos

CUME_DIST y PERCENT_RANK por estado

MySQL 8.4
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;
member_namestatusstatus_cume_diststatus_percent_rank
Lela Quinceydaughter0.3750
Annie Quinceydaughter0.3750
Wednesday Addamsdaughter0.3750
Headley Quinceyfather0.6250.42857142857142855
Ernest Forrestfather0.6250.42857142857142855
Flavia Quinceymother0.8750.7142857142857143
Constance Forrestmother0.8750.7142857142857143
Andie Quinceyson11

El cuarto más barato de los productos

MySQL 8.4
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;
nameprice
Mineral Water 1L1.99
Coca-Cola 0.5L2.49
Chips Pack2.99

Detalles

El valor es el número de filas cuyo valor en ORDER BY no es mayor que el actual, dividido entre el número de filas de la partición. A diferencia de PERCENT_RANK, la fila actual y las iguales a ella cuentan en la proporción, así que el resultado nunca es 0 y en la última fila es 1. La condición CUME_DIST() <= 0.25 en la consulta externa selecciona el primer cuarto de las filas. Sin ORDER BY, todas las filas de la partición reciben 1.

Véase también