大家好,我想去一个每年业绩前五名的产品,该如何用一条sql语句取呢?
比如表结构如下:
表名:tab
字段:year(年),prem(业绩),prod_id(产品)。用一条语句取每年业绩前5明的产品,谢谢!

解决方案 »

  1.   

    select m.* from
    (
    select t.* , row_number() over(partition by year order by prem desc) px from tab t
    ) m
    where px <= 5
      

  2.   

    select year,
           prod_id,
           prem
    from (select year,
                 prod_id,
                 prem,
                 row_number() over(partition by year,prod_id order by prem desc) rn
          from tab)
    where rn<=5
      

  3.   

    row_number不包含并列的情况
    如果有并列分为两种情况用不同的函数
    有两第一并列不跳过第二
    dense_rank
    有两第一并列跳过第二
    rank