写一个sql语句,检索出test_a表中每个id范围内年龄最大的前两名的人员的所有信息

解决方案 »

  1.   

    SELECT *
    FROM
      ( SELECT t.*, row_number() over (partition BY a order by a,b desc ) rn FROM test_a t
      )
    WHERE rn < 3;
      

  2.   


    SELECT * FROM 
    (SELECT row_number()OVER (ORDER BY sal DESC) row_n,e.*  from emp e) where row_n<=2;
      

  3.   

    over(partiton by )函数的典型用法
    select * from (select t.*,row_number() over(partition by a order by b desc) rn from t ) where rn<3
      

  4.   

    这是分析函数的用法,还有rank,dense_rank等多种用法,要依据具体的需求。