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

刷题通过的题目排名

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

这道题目要求我们对用户通过的题目数量进行排名。我们要做的事情如下:

1. 确定总体问题

我们需要根据每个用户通过的题目数量进行降序排名,并且对于通过题目数量相同的用户,给予相同的排名。最后,结果需要按照排名升序排列,如果排名相同,则按用户ID升序排列。

2. 分析关键问题

  • 计算排名:使用DENSE_RANK窗口函数根据通过的题目数量进行降序排名。
  • 排序输出:按排名升序排列,如果排名相同则按用户ID升序排列。

3. 解决每个关键问题的代码及讲解

步骤1:计算排名

我们使用DENSE_RANK窗口函数根据通过的题目数量进行降序排名:

select
    id,
    number,
    dense_rank() over (
        order by
            number desc
    ) as t_rank
from
    passing_number
  • DENSE_RANK() OVER (ORDER BY number DESC) AS t_rank:使用DENSE_RANK函数对通过的题目数量进行降序排名。DENSE_RANK会为相同数量的题目分配相同的排名。
步骤2:排序输出

我们使用ORDER BY按排名升序排列,如果排名相同则按用户ID升序排列:

order by
    t_rank asc,
    id asc
  • ORDER BY t_rank ASC, id ASC:按排名升序排列,如果排名相同则按用户ID升序排列。

完整代码

select
    id,
    number,
    dense_rank() over (
        order by
            number desc
    ) as t_rank
from
    passing_number
order by
    t_rank asc,
    id asc;
全部评论

相关推荐

nus2201602...:兄弟,你这个简历撕了丢了吧,就是一坨,去找几个项目,理解项目流程,看几遍就是你的了,看看八股就去干了,多看看牛客里别人发出来的简历,对着写,你这写的啥啊,纯一坨
点赞 评论 收藏
分享
07-02 10:44
门头沟学院 C++
码农索隆:太实诚了,告诉hr,你能实习至少6个月
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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