PostgreSQL - 将查询结果划分为五分位数

时间:2012-11-20 10:59:10

标签: sql postgresql

有一个PostgreSQL SQL SELECT结果。我需要将行划分为五分位数并将quintil值更新为特定行。

是否有可能在SELECT中执行此要求而无需在应用程序中执行此操作?当我需要为应用程序选择数据并从PostgreSQL服务器中进行排名时,我想避免这种情况。

数据示例 - 第一列是值,第二列是quintil

4859 - 5
4569 - 5
4125 - 4
3986 - 4
3852 - 3
3562 - 3
3452 - 2
3269 - 2
3168 - 1
3058 - 1

谢谢。

1 个答案:

答案 0 :(得分:7)

有一个名为“ntile”的窗口函数可以产生这个:你给它一个参数,指明它所覆盖的输出应该分成多少“瓦片”(在这种情况下为5)。

例如:

select t.id, ntile(5) over (order by t.id)
from t

有关窗口函数的介绍,请参阅window function tutorial;有关所提供标准函数的列表,请参阅window functions