2017-12-29 12 views
0

私は、特定のパーセンタイルから行を返そうとしていましたが、間違った値が得られています。データベース内のSCOREの値は、パーセンタイルを計算する場所です。Verticaデータベースのパーセンタイルを計算する

これは私の質問です。私はトップ10%にあるすべての値を取得しようとしています。

select x.count, MBR_NAME, MBR_ID, SCORE, 
PERCENTILE_CONT(0.9) WITHIN GROUP(ORDER BY SCORE) OVER (PARTITION BY x.count) AS PERCENTILE 
from tbSCORES_INFO, (select count(*) as count FROM tbSCORES_INFO) as x 

このクエリを実行すると、固定値が百分位数になり、すべての行で同じになります。

出力は、xthパーセンタイルに含まれるすべての行を返す必要があります。

答えて

2

私はあなたがntile()をしたいと思う:

select i.*, ntile(10) over (order by x.score) as decile 
from tblscores_info i; 

あなたが上位10%にしたい場合は、サブクエリを使用します。

select i.* 
from (select i.*, ntile(10) over (order by x.score) as decile 
     from tblscores_info i 
    ) i 
where decile = 10; 

PERCENTILE()機能が破断点であるを返します。 NTILE()は実際には「パーセンタイル」を割り当てます。

+0

魅力的な作品です!私は前にntileに出くわしたことはありません –

関連する問題