有一个表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 |
(注:总分相同时则显示同样的名次。)