我可以使用以下PSQL查询(最后)获取我表格中单行的dense_rank
,但是,我希望能够显示此为:PSQL dense_rank中不同项目中的一个项目
dense_rank OUT OF total distinct ranks
例如,由于dense_rank
允许“关系”,可以这么说,如果我有100行和所选行排名第14位(也有只有59不同等级),我想说:
Ranked 14th out of 59
有没有一种方法可以修改我的查询来实现这一目标,还是必须使用多个查询?
这里是我的查询:
SELECT ranked.*
FROM
(SELECT id,
postable_id,
spread_count,
bury_count,
read_count,
(spread_count*3) + (bury_count*-2) + (read_count*-1) AS score,
dense_rank() OVER (
ORDER BY (spread_count*3) + (bury_count*-2) + (read_count*-1) DESC) AS RANK
FROM posts) AS ranked
WHERE id = ?
这似乎工作@vkp,谢谢!如果你有时间,你能解释这个黑魔法吗?非常感激。 – lightyrs
@lightyrs ..我添加的唯一附加功能是获得最高排名(即本例中为59)的MAX(RNK)OVER()。 'RNK'就是你已经计算好的。连接它们会得到你所需要的。 –