SQL中对学习成绩自动排名次

有一个表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
 2011 程同学   78  432  2

(注:总分相同时则显示同样的名次。)

原文地址:https://www.cnblogs.com/Tonyyang/p/1525289.html