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

刷题通过的题目排名

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

全部评论

相关推荐

用户64975461947315:这不很正常吗,2个月开实习证明,这个薪资也还算合理,深圳Java好多150不包吃不包住呢,而且也提前和你说了没有转正机会,现在贼多牛马公司骗你说毕业转正,你辛辛苦苦干了半年拿到毕业证,后面和你说没hc了😂
点赞 评论 收藏
分享
03-12 11:54
门头沟学院 Java
dghyuiok:佬太厉害了,我也27双非,只会黑马商城和苍穹外卖,靠这两个烂大街项目,装成大三面了4个一个没中
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务