怎么用SQL查询单个学生的成绩的排名

如何用SQL查询单个学生的成绩的排名?
我建了一个表,表名称:成绩表;表里有姓名,学号,总分,总分,排名等;
我用下面语句可以查出排名:
select 姓名,学号,总分,RANK() over(order by 总分 desc)排名
from 成绩表

我现在有个问题想请教,如何写SQL语句,来查询单个学生的的总分排名?
------解决方案--------------------
select 姓名,学号,总分,row_number() over(order by 总分 desc) as 排名
from 成绩表

------解决方案--------------------
引用:
我建了一个表,表名称:成绩表;表里有姓名,学号,总分,总分,排名等;
我用下面语句可以查出排名:
select 姓名,学号,总分,RANK() over(order by 总分 desc)排名
from 成绩表

我现在有个问题想请教,如何写SQL语句,来查询单个学生的的总分排名?


row_number() 参考 http://technet.microsoft.com/zh-tw/library/ms186734.aspx
------解决方案--------------------
两位想复杂了,楼主的需求大概就是这样
SELECT *
  FROM (select 姓名,学号,总分,row_number() over(order by 总分 desc)排名
          from 成绩表) T
 WHERE 学号='12345'

------解决方案--------------------
理解同Tiger相同,估计是这样效果
写一种方法
select 姓名,学号,总分,isnull((select count(1) from 成绩表 where 总分>a.总分),0) +1 as 排名
from 成绩表 as a
where 学号='007'

------解决方案--------------------
我4楼就是取学号='12345'的一个学生的总分、排名。
既然你没把排名存下来,即使查询一个学生的排名,也要先把全部学生做个排名才能出结果。

建议成绩表中加个排名字段,用 row_number() 求出来的值更新一次,用起来就方便了。
反正成绩不是时时变动的,用不着每次查询都重新计算。