题解 | #刷题通过的题目排名#

刷题通过的题目排名

https://www.nowcoder.com/practice/cd2e10a588dc4c1db0407d0bf63394f3

select p.id, p.number, dense_rank() over(order by p.number desc) as t_rank from passing_number p
order by p.number desc, id asc

dense_rank的用法,注意不用每次用窗口函数都用partition by,我这里用了结果都是1。partition by相当于group by

出现RANK()函数结果全是1的原因在于PARTITION BY子句的使用方式。PARTITION BY p.id意味着对于每个唯一的p.id值,数据库都会创建一个分区,并在该分区内独立地计算排名。由于每个id在您的表中是唯一的(假设id是主键或具有唯一性约束),每个分区实际上只包含一行数据。

因此,在每个由唯一id值构成的分区内,RANK()函数只能为该行分配排名1,因为没有其他行可以与之比较或共享相同的排名。

全部评论

相关推荐

驼瑞驰_招募评论官版...:点击就挂,露头就秒
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务