今天面试.NET程序员的一道SQL题

来源:百度知道 编辑:UC知道 时间:2024/07/07 09:52:50
主考官问我:假定有一个学生成绩表,表中有一列学生姓名,有一列成绩,写出SQL,按学生成绩倒序排序,并把名次列出来。
表中没有名次这列。这SQL怎么写?

SQL Server的话可以这样写:
select (select count(*) from test where grade<=a.grade) as xuhao,name,grade
from test a order by grade desc
或者SQL Server 2005的话:
select row_number() over(order by grade desc) as rownum,name,grade
from table1

Oracle的话楼上就是正解

select rownum as mingci ,t.* from student t order by marks desc