表 ID NUMBER
   1   20
   2   30
   3   50
   4   10
   5   25
   6   80要求查出number最大的前三个记录,oracle sql语句怎么写呢???

解决方案 »

  1.   

    row_number() over(order by number desc)
      

  2.   

    create table max3
    (id number primary key,
     number1 number);insert into max3 values(1,20);
    insert into max3 values(2,30);
    insert into max3 values(3,50);
    insert into max3 values(4,10);
    insert into max3 values(5,25);
    insert into max3 values(6,80);select id, number1 from(select a.*,row_number() over(order by number1 desc) rn   from max3 a)
    where rn<4;       ID    NUMBER1
    --------- ----------
            6         80
            3         50
            2         30
      

  3.   

    可以用分析函数
    但这里不用分析函数一样可以做到
    select * from (
      select * from tt order by number desc)
    where rownum<=3
    用分析函数的话
    select * from (
      select tt.*,row_number()over(order by number desc)rn from tt)
    where rn<=3
    分析函数的用法楼主查下相关资料,这里不好说明
      

  4.   


    select a.id, a.number
    from(
        select t.*, row_number() over(order by number desc) rn from table1 t
    )a where a.rn<4