Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Berechnung des Medians mit MySQL

Ich schlage einen schnelleren Weg vor.

Holen Sie sich die Zeilenanzahl:

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

Nehmen Sie dann den mittleren Wert in einer sortierten Unterabfrage:

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

Ich habe dies mit einem 5x10e6-Datensatz von Zufallszahlen getestet und es findet den Median in weniger als 10 Sekunden.

Dadurch wird ein beliebiges Perzentil gefunden, indem COUNT(*)/2 ersetzt wird mit COUNT(*)*n wobei n ist das Perzentil (0,5 für Median, 0,75 für 75. Perzentil usw.).