2

有一个 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

谢谢你。

4

1 回答 1

8

有一个称为“ntile”的窗口函数来产生这个:你给它一个参数,指定它所覆盖的输出应该分成多少个“tiles”(在这种情况下是 5 个)。

例如:

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

有关窗口函数的介绍,请参阅窗口函数教程,有关提供的标准函数列表,请参阅窗口函数。

于 2012-11-20T11:03:33.573 回答