sql >> Database teknologi >  >> RDS >> Mysql

Beregning af medianen med Mysql

Jeg foreslår en hurtigere måde.

Få rækkeantallet:

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

Tag derefter den midterste værdi i en sorteret underforespørgsel:

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

Jeg testede dette med et 5x10e6-datasæt med tilfældige tal, og det vil finde medianen på under 10 sekunder.

Dette vil finde en vilkårlig percentil ved at erstatte COUNT(*)/2 med COUNT(*)*n hvor n er percentilen (.5 for median, .75 for 75. percentil osv.).



  1. Opret forbindelse til ekstern MySQL-database via SSH ved hjælp af Java

  2. SQL Server - Bedste måde at få identitet for indsat række?

  3. Dvale:Dvalelås fundet, når du forsøger at få lås

  4. Hvorfor er null<>null=null i mysql