sql >> Databasteknik >  >> RDS >> Mysql

Beräknar medianen med Mysql

Jag föreslår ett snabbare sätt.

Få radantalet:

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

Ta sedan mittvärdet i en sorterad underfråga:

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

Jag testade detta med en datauppsättning på 5x10e6 med slumpmässiga tal och den kommer att hitta medianen på under 10 sekunder.

Detta kommer att hitta en godtycklig percentil genom att ersätta COUNT(*)/2 med COUNT(*)*n där n är percentilen (0,5 för median, 0,75 för 75:e percentilen, etc).



  1. SQL JOIN vs IN prestanda?

  2. Hur kan jag anropa en lagrad SQL-procedur med EntityFramework 7 och Asp.Net 5

  3. MariaDB introducerar en JSON_TABLE()-funktion

  4. Mysql-transaktioner inom transaktioner