题解 | #考试分数(三)#

考试分数(三)

http://www.nowcoder.com/practice/b83f8b0e7e934d95a56c24f047260d91

核心思路: 将当前表分数跟一个临时表进行比较,当临时表没有一个分数,或者只有一个分数比当前表高时,说明该分数排名是第一名,或者第二名。
举例:只看C++语言,id为1时,12000<13000,说明这是第二名,id为2时,13000统计出来为0个,没人比他小,说明他是第一名,id为6时,可以知道11000小于12000和13000,为2,说明是第三名。
避坑点:一定要去重!不然在java语言的时候,10000小于两个12000,就是第三名了,然而题目要求可以并列,为第二名

select g.id,l.name,g.score
from grade g,language l
where g.language_id=l.id and
(select count(distinct g1.score) from grade g1 where g.language_id=g1.language_id and g.score<g1.score) in (0,1)
order by l.name ASC,g.score DESC,g.id ASC
全部评论

相关推荐

感性的干饭人在线蹲牛友:🐮 应该是在嘉定这边叭,禾赛大楼挺好看的
点赞 评论 收藏
分享
10-24 13:36
门头沟学院 Java
Zzzzoooo:更新:今天下午有hr联系我去不去客户端,拒了
点赞 评论 收藏
分享
3 1 评论
分享
牛客网
牛客企业服务