sql - PostgreSQL - 将查询结果分成五分位数

标签 sql postgresql

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

相关文章:

sql - 为什么显示的 sed 命令行显示 "extra characters after command"错误?

sql - PostgreSQL:唯一约束或唯一索引

php - MySQL PDO 查询优化

java - 在 Java 中使用 SQL 插入变量

postgresql - PostgreSQL 是否自动检测 group by 子句中的唯一记录?

postgresql - 将数据从 PostgreSQL 移动到 AWS S3 并使用 RedShift Spectrum 进行分析

sql - PostgreSQL ORDER BY 列位置(而不是列名)

java - 在执行之前无法从 CallableStatement 检索结果

MySQL:更改每个选定行的用户变量

MySql 偏移量查询不起作用