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;