我正在尝试在表格内对一部分数据进行排名,但我认为我的方法有问题。我在PostgreSQL的文档中找不到关于rank()函数的详细信息,可能是我找错了地方。
无论如何,我想知道根据日期,在表格内针对一个集群中的id的序列排名。我的查询语句如下:
select cluster_id,feed_id,pub_date,rank
from (select feed_id,pub_date,cluster_id,rank()
over (order by pub_date asc) from url_info)
as bar where cluster_id = 9876 and feed_id = 1234;
我是依据以下StackOverflow帖子进行建模的:postgres rank
我认为自己做错了什么,原因是url_info中只有39行位于cluster_id 9876,并且这个查询运行了10分钟也没有返回结果。(实际上重新运行了相当长的时间,但没有返回结果,而在id 1234的cluster 9876中有一行) 我期望这将告诉我一些如"根据给定的条件,id 1234排名第5"之类的信息。它将根据我的查询约束返回一个相对排名,对吗?顺便提一下,这是PostgreSQL 8.4。
over
子句应该指定一个partition by
。这里是窗口函数的教程。 - dbenhur