NTILE
Divide las filas de una partición de la ventana en el número indicado de grupos de tamaño parecido y devuelve el número de grupo de la fila.
MySQL 8.4
NTILE(number_of_groups)- number_of_groups
- Número de grupos; entero positivoINT
Valor devuelto
Número entero (BIGINT UNSIGNED) de 1 a number_of_groups
Ejemplos
Tres grupos por fecha de nacimiento
MySQL 8.4
SELECT member_name,
birthday,
NTILE(3) OVER (
ORDER BY birthday
) AS age_group
FROM FamilyMembers;Límites de los cuartiles por importe del pedido
MySQL 8.4
SELECT bucket,
MIN(total_amount) AS min_amount,
MAX(total_amount) AS max_amount,
COUNT(*) AS orders
FROM (
SELECT total_amount,
NTILE(4) OVER (
ORDER BY total_amount
) AS bucket
FROM orders
) AS t
GROUP BY bucket
ORDER BY bucket;Detalles
Si las filas no se pueden repartir por igual, los primeros grupos reciben una fila más: 8 filas en 3 grupos se reparten como 3, 3 y 2. Si hay más grupos que filas, cada fila va a su propio grupo. Las filas con el mismo valor de ORDER BY pueden acabar en grupos distintos, y sin ORDER BY las filas se reparten entre los grupos de forma arbitraria.