有一个PostgreSQL SQL SELECT 结果。我需要将行分成五分位数并将五分位数更新为特定行。
是否有可能在 SELECT 中执行此要求而无需在应用程序中执行?我想避免需要为应用程序选择数据并在 PostgreSQL 服务器之外进行排名的情况。
数据示例 - 第一列是值,第二列是 quintil
4859 - 5 4569 - 5 4125 - 4 3986 - 4 3852 - 3 3562 - 3 3452 - 2 3269 - 2 3168 - 1 3058 - 1
谢谢。
最佳答案
有一个名为“ntile”的窗口函数可以产生这个:你给它一个参数,指定它覆盖的输出应该分成多少个“tiles”(在本例中为 5)。
例如:
select t.id, ntile(5) over (order by t.id)
from t
参见 window function tutorial有关窗口函数的介绍,以及 window functions获取所提供的标准列表。
关于sql - PostgreSQL - 将查询结果分成五分位数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13471751/