有一个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
谢谢。
答案 0 :(得分:7)
有一个名为“ntile”的窗口函数可以产生这个:你给它一个参数,指明它所覆盖的输出应该分成多少“瓦片”(在这种情况下为5)。
例如:
select t.id, ntile(5) over (order by t.id)
from t
有关窗口函数的介绍,请参阅window function tutorial;有关所提供标准函数的列表,请参阅window functions。