2017-04-09 36 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

私はかなりの時間この問題を解決しようとしていましたが、次の答えが見つかりました。正直華麗です。大きなテーブル(私が使用したテーブルには約5milのレコードが入っていて、数秒必要)でもかなり高速です。

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のオリジナル投稿を確認してください。

関連する問題