2017-04-09 239 views
0

我想計算MYSQL中的百分位數。請讓我知道這是計算百分比的正確方法。使用MYSQL計算百分位數

Set @percentile = 30; 
select firnum, a.rownum 
from 
    (select firnum, @rownum := @rownum + 1 AS rownum 
     from (select firnum from per order by firnum) as a, 
      (SELECT @rownum := 0) b) as a, 
      (select round((COUNT(*) * @percentile)/100) percen from per) as b 
where a.rownum = b.percen; 

回答

0

我試圖解決這個很長一段時間,然後我發現了以下答案。老實說,輝煌。即使對於大桌子也是相當快的(我使用它的桌子包含大約5密耳的記錄並且需要幾秒鐘)。

SELECT 
CAST(SUBSTRING_INDEX(SUBSTRING_INDEX(
    GROUP_CONCAT(field_name ORDER BY field_name SEPARATOR ','), 
    ',', 95/100 * COUNT(*) + 1), ',', -1) AS DECIMAL) AS '95th Per' 
FROM table_name; 

正如你可以想象的只是用你的表和列的名稱替換table_name和field_name。

如需進一步信息查詢Roland Bouman的原始帖子