You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

按下载量排序排名后如何用SQL查询指定ID的对应排名记录

问题原因

窗口函数RANK()的计算时机晚于WHERE子句的过滤逻辑。你在同层查询添加ID过滤条件后,窗口函数只会对过滤后仅剩的1行数据计算排名,自然返回结果为1,和全表排名结果不一致。

解决方案

方案1:子查询先算全表排名再过滤

完全对齐你之前的全表RANK()计算逻辑,适合数据量不大的场景:

SELECT id, rank 
FROM (
    SELECT id, RANK() OVER(ORDER BY "downLoad" DESC) AS rank 
    FROM gameinfo
) AS ranked_game_list
WHERE id = '9b9df0c5-9906-4444-b30a-9b64ff8fea94';

方案2:直接统计排名(性能更优)

不需要扫描全表计算所有行的排名,仅统计比目标行download值更高的行数加1即可,和RANK()的返回结果完全一致,数据量大时性能更好:

SELECT 
    t.id,
    (SELECT COUNT(*) + 1 FROM gameinfo WHERE "downLoad" > t."downLoad") AS rank
FROM gameinfo t
WHERE t.id = '9b9df0c5-9906-4444-b30a-9b64ff8fea94';

内容的提问来源于stack exchange,提问作者Alex Choi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 17:15:04