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

Sélectionnez le nième centile de MySQL

Cela vous donnera approximativement le 40e centile, il renvoie la ligne où 40% des lignes sont inférieures à celle-ci. Il trie les lignes en fonction de leur distance par rapport au 40e centile, car aucune ligne ne peut tomber exactement sur le 40e centile.

SELECT m1.field, m1.otherfield, count(m2.field) 
  FROM mydata m1 INNER JOIN mydata m2 ON m2.field<m1.field
GROUP BY 
   m1.field,m1.otherfield
ORDER BY 
   ABS(0.4-(count(m2.field)/(select count(*) from mydata)))
LIMIT 1