gpt4 book ai didi

sql - Postgres : Find position of a specific row within a resultset?

转载 作者:太空狗 更新时间:2023-10-30 01:41:31 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何获取查询中单个项目相对于查询返回的所有项目的相对位置。

例如,获得答案的长期方法是:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com