表T
姓名  分数    
张三   75
李四   62 
王五   85
赵六   78通过select 语句返回名次   姓名   分数
1      王五   85
2      赵六   78
3      张三   75
4     李四   62 

解决方案 »

  1.   

    自答
     select rownum,姓名,分数 from T order by 分数
      

  2.   

    select rownum '名次‘,姓名,分数 from T order by 分数 desc
      

  3.   

    select rownum, name,grade from(select name,grade from test order by grade desc)
      

  4.   

    这个更精确些:
    select rownum "名次", name,grade from(select name,grade from test order by grade desc)
      

  5.   

    多种数据库比较通用的写法:
    select *
    from 
    (
    select (select count(*)+1 from T b where a.分数<>b.分数 and b.分数<=a.分数) [名次],
           姓名,分数
    from T a
    ) bb
    order by [名次] asc
      

  6.   

    select ROW_NUMBER() OVER (ORDER BY 分数 desc),姓名,分数 from Table
      

  7.   

    select rownum as 名次, 姓名,分数 from (select rownum , 姓名,分数 from table order by 分数 desc)
      

  8.   

    select ROW_NUMBER() OVER (ORDER BY 分数 desc),姓名,分数 from Table
    这个用dense_rank()分析函数更好一些,同样分数可以并列排名。