sql >> Base de Datos >  >> RDS >> Mysql

Calculando la Mediana con Mysql

Propongo una forma más rápida.

Obtener el número de filas:

SELECT CEIL(COUNT(*)/2) FROM data;

Luego tome el valor medio en una subconsulta ordenada:

SELECT max(val) FROM (SELECT val FROM data ORDER BY val limit @middlevalue) x;

Probé esto con un conjunto de datos de números aleatorios de 5x10e6 y encontrará la mediana en menos de 10 segundos.

Esto encontrará un percentil arbitrario al reemplazar el COUNT(*)/2 con COUNT(*)*n donde n es el percentil (0,5 para la mediana, 0,75 para el percentil 75, etc.).