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

每类试卷得分前3名

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

select tag as tid,uid ,ranking 
 from (
 SELECT b.tag,a.uid,max(a.score),min(a.score),
row_number() over (partition by tag order by max(a.score) desc ,min(a.score) desc ,a.uid desc) as ranking 
 /*先按照最高分,再按照最低分排,最后按照uid排序 */
 FROM exam_record a 
 LEFT JOIN examination_info b ON a.exam_id=b.exam_id
 GROUP BY b.tag,a.uid
 ) as newtable
 where ranking <=3;
 
 ##注意的一点就是,语句报错SQL_ERROR_INFO: 'Every derived table must have its own alias'
 ##原因是因为对于select生成的表 必须命个别名,as newtable,结果顺利运行
全部评论

相关推荐

不愿透露姓名的神秘牛友
07-24 13:35
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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