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

刷题通过的题目排名

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;
全部评论

相关推荐

码农索隆:这种hr,建议全中国推广
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-03 17:37
点赞 评论 收藏
分享
06-12 16:00
天津大学 Java
牛客30236098...:腾讯坏事做尽,终面挂是最破防的 上次被挂了后我连简历都不刷了
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
06-30 18:19
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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