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

刷题通过的题目排名

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

遇到了一个经典的问题:根据两列排名;根据第一列给出排名结果;根据第二列给出第一列一致时进一步的排名顺序

思路:使用OVER()窗口函数

函数选择:根据该图,我们可以选用DENSE_RANK()

错误方法:直接使用DENSE_RANK()进行排名

错误原因:因为ORDER BY中有两个依据,系统会再次根据第二个依据进行排名,排名会再次更改

正确方法:这个问题要先使用DENSE_RANK ()进行排民,形成FROM subquery,再全部重新排序

SELECT *
FROM (
    SELECT 
        id,
        number,
        DENSE_RANK() OVER(ORDER BY number DESC) AS t_rank
    FROM passing_number 
    ) AS rt
ORDER BY number DESC, id

全部评论

相关推荐

2025-12-19 21:53
门头沟学院 Java
想做OpenGL:不要一来就把自己定位这么低吧,把大厂当成目标,不断去学技术做项目,最后你至少能学到能找到中小厂的技术水平,你一上来就找这种两千块还要前后端都会的,其实对你用处不会很大,真去了也是打杂
点赞 评论 收藏
分享
01-03 12:06
复旦大学 Java
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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