一张成绩表  姓名、科目、成绩 三个字段
首先对A科目成绩由高到底排序,再统计排序后排名在10-20名的姓名

解决方案 »

  1.   


    试试:select * from (   
    select rownum r,* from table   
    where rownum <= 20   
    order by 成绩 )   
    where r >= 10  ------------------------------------------------------------------------------
    Blog: http://blog.csdn.net/tianlesoftware
    网上资源: http://tianlesoftware.download.csdn.net
    相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
    Q Q 群:62697716
      

  2.   


     select 成绩 from (
      select rownum AS rowmm,成绩 from 
      ( select 成绩 from 成绩表 order by 成绩)
      where rownum<20
      )
      where rowmm>10
      

  3.   

    使用rank进行排名后获取Select b.* from
    (
    select a.*, rank() over(ORDER BY 成绩 DESC) xh from yourtable a ) b
    where b.xh between 10 and 20
      

  4.   

    OK,rownum<=20,等号漏了
    或者用分析函数row_number
      

  5.   

    谢谢大家的回复
    ROWNUM可以解决排序问题,但是RANK函数能解决成绩重复的问题!
      

  6.   

    wildwave不好意思,结分时分差了,rank和row_number这个学习中。。对我有用。。谢谢