有一个表Score,结构如下:
学号 | int primary key |
姓名 | nvarchar(20) |
课目成绩 | float |
总分 | float |
查询结果:
学号 | 姓名 | 课目成绩 | 总分 |
2011 | 程同学 | 78 | 432 |
2012 | 王同学 | 88 | 498 |
对总分进行排序,并得到最终的名次,使用如下SQL语句即可:
select *,isnull((select sum(1) from Score where 总分>A.总分),0)+1 as 名次
from Score as A
order by (select sum(1) from Score where 总分>=A.总分)
得出结果:
学号 | 姓名 | 课目成绩 | 总分 | 名次 |
2012 | 王同学 | 88 | 498 | 1 |
2011 | 程同学 | 78 | 432 | 2 |
(注:总分相同时则显示同样的名次。)