题目描述:
1.原始数据是一列学生的成绩(称为:分数)。
2.编写一个 SQL 查询来实现对分数进行排序。
3.根据上述排序的结果,给出排名。
4.如果两个分数一样,则排名结果是一样的。
5.例如:100,90,90,80的排名是:1,2,2,4
欢迎大家转发,一起传播知识和正能量,帮助到更多人。辛苦大家转发时注明出处(也是咱们公益编程交流群的入口网址),刘经纬老师共享知识相关文件下载地址为:http://liujingwei.cn
解题思路:
步骤一(图1):对分数降序排序。
select a.Score as Score
from score a
order by a.Score DESC;
步骤二(图2):计算某个得分的排名,例如98分,统计大于98分的记录数,若为1,则98排名为1+1=2。
select count(b.Score)+1 as Rank from score b where b.Score > 98;
步骤三(图3):将前两个步骤结合,计算步骤1中a.Score的每一个记录的排名。即步骤2中的98改为步骤1中的a.Score。
select a.Score as Score,(select count(b.Score)+1 from score b where b.Score > a.Score) as Rank from score a order by a.Score DESC;
温馨期待:
期待大家提出宝贵建议,互相交流,收获更大。