题解 | #每类试卷得分前3名#

每类试卷得分前3名

https://www.nowcoder.com/practice/255aa1863fe14aa88694c09ebbc1dbca

select 
    tt.tid
  , tt.uid
  , tt.ranking
from (
    select 
      t1.tag as tid
    , t2.uid as uid
    # 如果两人最大分数相同,选择最小分数大者,如果还相同,选择uid大者
    , row_number() over(partition by t1.tag order by max(t2.score) desc, min(t2.score) desc, t2.uid desc ) as ranking
    from examination_info t1
    left join exam_record t2
        on t2.exam_id = t1.exam_id
    group by t1.tag, t2.uid
   ) tt
where tt.ranking <= 3  # 前三名
/*SQL*/;

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-08 12:05
俺不中了,BOSS遇到了一个hr,我觉得我咨询的问题都很正常吧,然后直接就被拒绝了???
恶龙战士:你问的太多了,要不就整理成一段话直接问他,一个一个问不太好
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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