Mysql
 sql >> Base de données >  >> RDS >> Mysql

Calcul de la médiane avec Mysql

Je propose un moyen plus rapide.

Obtenez le nombre de lignes :

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

Prenez ensuite la valeur du milieu dans une sous-requête triée :

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

J'ai testé cela avec un ensemble de données 5x10e6 de nombres aléatoires et il trouvera la médiane en moins de 10 secondes.

Cela trouvera un centile arbitraire en remplaçant le COUNT(*)/2 avec COUNT(*)*nn est le centile (0,5 pour la médiane, 0,75 pour le 75e centile, etc.).