Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Calculando a mediana com Mysql


Eu proponho uma maneira mais rápida.

Obtenha a contagem de linhas:

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

Em seguida, pegue o valor do meio em uma subconsulta classificada:

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

Eu testei isso com um conjunto de dados 5x10e6 de números aleatórios e ele encontrará a mediana em menos de 10 segundos.

Isso encontrará um percentil arbitrário substituindo o COUNT(*)/2 com COUNT(*)*n onde n é o percentil (0,5 para mediana, 0,75 para 75º percentil, etc).