计算Vertica数据库中的百分位数

时间:2017-12-29 15:04:18

标签: sql vertica

我一直在尝试从特定的百分位数返回行,但我一直在弄错值。数据库中SCORE的值是应该从中计算百分位数的位置。

这是我的查询。我试图获得前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百分位数的所有行。

1 个答案:

答案 0 :(得分:2)

我想你想要# a 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 test # 1 row1 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 8 # 2 row2 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1

ntile()

如果你想要前10%,那么使用子查询:

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

select i.* from (select i.*, ntile(10) over (order by x.score) as decile from tblscores_info i ) i where decile = 10; 函数返回作为断点的PERCENTILE()实际上指定了“百分位数”。