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

每类试卷得分前3名

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

select tag,uid,ranking
from(
select tag,uid,rank()over(partition by tag order by maxscore desc,minscore desc,uid desc)as ranking
from
(select uid,tag,max(score) maxscore,min(score) minscore
from exam_record ed
left  join examination_info eo 
on ed.exam_id=eo.exam_id
group by tag,uid
) t1
) t2
where ranking <=3

三次查询

最里层子查询:两表连接,计算每类试卷每个学生的最高成绩和最低成绩,这里用left join 是因为null值存在,计算最高最低成绩是为了题目要求排序

第二层查询;使用窗口函数按照最高分,最低分,uid排名 并取别名ranking

最外面查询ranking大于等于3的

全部评论

相关推荐

代码飞升AL:同学院本建议你换一个项目 就算你不去特意搜也应该知道点评不能写吧 保持投递不要停 然后快速弄一个项目换上去 公司就别挑了 我第一段120一天 快速跳就行
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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