sql >> Database >  >> RDS >> Mysql

De mediaan berekenen met Mysql

Ik stel een snellere manier voor.

Krijg het aantal rijen:

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

Neem dan de middelste waarde in een gesorteerde subquery:

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

Ik heb dit getest met een 5x10e6-dataset van willekeurige getallen en het zal de mediaan in minder dan 10 seconden vinden.

Dit zal een willekeurig percentiel vinden door de COUNT(*)/2 . te vervangen met COUNT(*)*n waar n is het percentiel (0,5 voor mediaan, 0,75 voor 75e percentiel, enz.).



  1. MariaDB INTERSECT-operator uitgelegd

  2. Toegang krijgen tot MySQL met de MySQL Root-gebruiker

  3. NodeJS en mysql:wacht op het resultaat van de query

  4. Oracle SQL Developer:Mislukt - Test mislukt:kon de netwerkadapter geen verbinding tot stand brengen?