作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试弄清楚如何获取查询中单个项目相对于查询返回的所有项目的相对位置。
例如,获得答案的长期方法是:
single_item = SELECT * FROM table WHERE id=65
result = SELECT * FROM table WHERE published_date < date_value
x=1
foreach(result as item):
if(item.id == single_item.id):
required_value = x
endif
x++
endforeach
是否有一种通过单个 postgres 查询获取 required_value
的简单方法?
最佳答案
使用analytic/ranking/windowing functionality - 8.4 documentation link :
WITH summary AS (
SELECT t.*,
ROW_NUMBER() OVER(ORDER BY t.published_date) AS position
FROM TABLE t)
SELECT s.*
FROM summary s
WHERE s.id = 65
没有 WITH
语法的替代:
SELECT s.*
FROM (SELECT t.*,
ROW_NUMBER() OVER(ORDER BY t.published_date) AS position
FROM TABLE t) s
WHERE s.id = 65
position
列将是一个整数值,代表 id
值为 65 的记录的位置,基于 published_date
列按升序排列。如果您希望在有平局时重复位置值,请将 ROW_NUMBER()
替换为 RANK()
关于sql - Postgres : Find position of a specific row within a resultset?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3644628/
我是一名优秀的程序员,十分优秀!