postgresql 获取给定表列中给定值的百分比排名

igetnqfo  于 2023-02-04  发布在  PostgreSQL
关注(0)|答案(1)|浏览(167)

我有一个Postgres表,大约有500 k行,其中一列叫做 score,值的范围是0-1,数据不是正态分布的。
假设我有一个观测值0.25,我想找出它在 score 列的分布中的位置,这有时被称为百分比等级。
例如,值0.25位于第40百分位数。这意味着值0.25大于表中观测值的40%。
我知道我可以用下面的公式来计算频率分布,但是当我想要的只是一个百分位数的时候,这感觉有点过头了。

select k, percentile_disc(k) within group (order by mytable.score)
from mytable, generate_series(0.01, 1, 0.01) as k
group by k
3xiyfsfu

3xiyfsfu1#

听起来像是要使用假设集聚合函数**percent_rank()**:

SELECT percent_rank(0.25) WITHIN GROUP (ORDER BY score)
FROM   mytable;

本手册:
计算假设行的相对排名,即(rank-1)/(总行数-1)。因此,值的范围为0到1(含)。

相关问题