计算百分位数的快速通用方法

Bob*_*sen 9 postgresql statistics

我想在 PostgreSQL 中找到一个未排序列的 n>1 个百分位数。例如第 20、第 40、第 60、第 80 和第 100 个百分位数。

一个明显的解决方案是对列进行计数和排序,然后查看,但我希望有更好的解决方案。有任何想法吗?

PS 我找到了一个很好的 MySQL解决方案,但无法将其转换为 psql

Bob*_*sen 12

我想出了以下几点:

select cume, max(var) AS max_var
from (
   select var
        , ntile(5) over (order by var) as cume
   from table
   ) as tmp
group by cume
order by cume;
Run Code Online (Sandbox Code Playgroud)

它选择使用 划分的每个组的最大值ntile()