Sql 在Vertica数据库中计算百分位数

Sql 在Vertica数据库中计算百分位数,sql,vertica,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

我一直试图从特定的百分位数返回行,但没有成功,但我一直得到错误的值。数据库中的
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
百分位数的所有行。

我想您需要
ntile()

如果需要前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()
实际上指定了“百分位”。

就像一个符咒!我以前从未见过安提尔
select i.*
from (select i.*, ntile(10) over (order by x.score) as decile
      from tblscores_info i
     ) i
where decile = 10;