Referencia de funciones

PERCENT_RANK

Devuelve el rango relativo de una fila en la partición de la ventana, es decir, la proporción de filas que van antes que ella.

MySQL 8.4
PERCENT_RANK()

Valor devuelto

Número de coma flotante (DOUBLE) de 0 a 1

Ejemplos

Proporción por fecha de nacimiento

MySQL 8.4
SELECT member_name,
	birthday,
	RANK() OVER (
		ORDER BY birthday
	) AS birthday_rank,
	PERCENT_RANK() OVER (
		ORDER BY birthday
	) AS birthday_percent_rank
FROM FamilyMembers;
member_namebirthdaybirthday_rankbirthday_percent_rank
Headley Quincey1960-05-1310
Ernest Forrest1961-09-1120.14285714285714285
Flavia Quincey1963-02-1630.2857142857142857
Constance Forrest1968-09-0640.42857142857142855
Andie Quincey1983-06-0550.5714285714285714
Lela Quincey1985-06-0760.7142857142857143
Annie Quincey1988-04-1070.8571428571428571
Wednesday Addams2005-01-1381

Posición del salario en el departamento

MySQL 8.4
SELECT department_id,
	name,
	salary,
	ROUND(
		PERCENT_RANK() OVER (
			PARTITION BY department_id
			ORDER BY salary
		),
		2
	) AS salary_percent_rank
FROM employees;
department_idnamesalarysalary_percent_rank
1Elena Kozlova1750000
1Pavel Smirnov1800000.25
1Igor Petrov1950000.5
1Anna Ivanova2100000.75
1Dmitry Sokolov2200001
2Maxim Morozov1600000
2Nikita Popov1600000
2Olga Novikova2000000.67
2Irina Volkova2050001
3Andrey Kozlov1400000

Detalles

El valor se calcula así: (RANK() - 1) / (número de filas de la partición - 1): la primera fila recibe 0 y la última, 1. Las filas con valores iguales en ORDER BY reciben la misma proporción, igual que el mismo puesto en RANK. En una partición de una sola fila, el resultado es 0, y sin ORDER BY, también en todas las filas de la partición.

Véase también