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

刷题通过的题目排名

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

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-01 17:13
想去,但是听说加班强度实在难崩,所以拒绝了,现在有点心梗对面hr感觉也是实习生,打电话的时候怪紧张的,但是感觉人很好嘞
水中水之下水道的鼠鼠:哥们这不先去体验一下,不行再跑呗,大不了混个实习经历(有更好的转正offer就当我没说)
点赞 评论 收藏
分享
牛客92804383...:在他心里你已经是他的员工了
点赞 评论 收藏
分享
06-26 17:24
已编辑
宁波大学 Java
迷失西雅图:别给,纯kpi,别问我为什么知道
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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