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;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;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.