先排序,在取rownum<4
select * from  (select * from 表名  order by 成绩 desc) where  rownum<4

解决方案 »

  1.   

    select * from (select * from t1 order by score desc)  t where rownum<4
      

  2.   

    select * from (select * from tablename order by 成绩  desc)   where rownum<4
      

  3.   

    hehe 这么经典的问题还是找找精华区吧
      

  4.   

    上边说的不太妥当,如果第三名的成绩有相同的多个人,那应该怎么样呢?
    正确的办法应该是先获得rownum=3的成绩,然后把所有成绩大于这个成绩的都列出来才是正解
      

  5.   

    select * 
    from t1
    where grade > =( select grade
                    from (select grade
                          from t1 t
                          order by grade)
                    where rownow=3);
      

  6.   

    select * from t1 where  成绩 >any(select 成绩 from (select * from t1 order by 成绩 desc) where rownum<4)
      

  7.   

    引用: 
    上边说的不太妥当,如果第三名的成绩有相同的多个人,那应该怎么样呢?
    正确的办法应该是先获得rownum=3的成绩,然后把所有成绩大于这个成绩的都列出来才是正解情况1:前三名都是100fen,那么前三名就是前三名就是并列第一,也就是千三名。
    情况2:第一名是100,第二三名都是98,那么第一名是100,并列2名,前三名都有了。
    情况3:第一名100,第二名98,第三名95 第四名95   那么前三名应该是四个人,三名和四名并列第三。.................这种情况是上头最不爱看到的,发奖品超出了,呵呵。  
     
      

  8.   

    这样应该可以
    select * (select rank() over(order by score) rank ,t1.* from t1) where rank < 4
      

  9.   

    忘了前3名应该是 order by score desc
      

  10.   

    select * (select rank() over(order by score desc) rank ,t1.* from t1) where rank < 7
    结果:
    rank name     score
    1    a   100
    2    b   99
    2    c   99
    2    d   99
    5    e   98
    6 f   97select * (select DENSE_RANK() over(order by score desc) rank ,t1.* from t1) where rank < 5
    结果:
    rank name     score
    1    a   100
    2    b   99
    2    c   99
    2    d   99
    3    e   98
    4 f   97
      

  11.   

    排名无重复SQL> select rid,ename,job,sal from (
      2  select ename,job,sal,row_number() over(order by sal desc) rid from emp
      3  ) t
      4  where t.rid<=3;       RID ENAME      JOB              SAL
    ---------- ---------- --------- ----------
             1 KING       PRESIDENT       5000
             2 SCOTT      ANALYST         3000
             3 FORD       ANALYST         3000SQL>