mysql排名前十的学生,mysql--分数排名

   日期:2024-12-27    作者:tcetc 移动:http://mip.riyuangf.com/mobile/quote/72736.html

解题思路

1、首先,我们需要对分数进行倒序排序(以下得出的结果是没有去重过的倒序的分数)

select Score from Scores order by Score DESC

2、接下来我们还缺少一列Rank。例如:一个班有20个人,但是所有人都考了95分,那么全班同学都是并列第一即名次只有一个;如果一部分同学考了95,一部分考了90,一部分考了85,那么整个成绩的排名就分为3个名次。(以下得出的结果是去重之后名次的总数)

select count(distinct Score) from Scores

3、最后考虑如何将前面的两者结合起来,并且将各自的名次显示出来。在我们执行第二步的时候,是否可以这么考虑,在对分数进行去重统计总数的基础上,我们再加一个条件,就是统计去重总数的同时我们筛选出来比我们分数高的人的个数(因为这里是去重的统计,所以最终的出来的名次就是该人的真实名次,不会出现比如有两个人是并列第一,而接下来的那个人却是排名第三的这种错误的情况)这里+1的理解是因为条件部分使用的是 >  而不是>=,如果使用的是>=的话就不需要+1操作了,见解法二

(解法一)Select

a.Score as score, (select count(distinct b.Score)+1 from Scores as b where b.Score > a.Score) as Rank

from Scores as a order by a.Score DESC

(解法二)Select

a.Score as score, (select count(distinct b.Score) from Scores as b where b.Score >= a.Score) as Rank

from Scores as a order by a.Score DESC

执行结果图

标签:分数,名次,mysql,Rank,Score,Scores,排名,select


特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。


举报收藏 0评论 0
0相关评论
相关最新动态
推荐最新动态
点击排行
{
网站首页  |  关于我们  |  联系方式  |  使用协议  |  隐私政策  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号