13

何千もの行を含むテーブルがあり、「ラウンド」と呼ばれるフィールドの 1 つの 90 パーセンタイルを計算したいと考えています。

たとえば、90 パーセンタイルにある round の値を選択します。

MySQL でこれを行う簡単な方法がわかりません。

この種の計算をどのように開始するかについて、誰かが提案できますか?

ありがとうございました!

4

9 に答える 9

1

http://www.artfulsoftware.com/infotree/queries.php#68

SELECT  
  a.film_id , 
  ROUND( 100.0 * ( SELECT COUNT(*) FROM film AS b WHERE b.length <= a.length ) / total.cnt, 1 )  
  AS percentile 
FROM film a  
CROSS JOIN (  
  SELECT COUNT(*) AS cnt  
  FROM film  
) AS total 
ORDER BY percentile DESC; 

非常に大きなテーブルの場合、これは遅くなる可能性があります

于 2013-11-04T14:39:24.500 に答える