美文网首页
取数素养之窗口函数

取数素养之窗口函数

作者: 进击的yl | 来源:发表于2018-03-26 08:48 被阅读0次

    分组统计 top n 的需求

    场景需求:需要找出每个品类下购买金额top 10的用户,而group by只对聚合的结果进行作用 返回一个结果值,这个时候就需要神奇的开窗函数了。

    先上代码

    select *
    from
        (select product_category,user_id,t_amt,
                row_number() over (partition by product_category order by t_amt desc) rank
         from 
             (select product_category,user_id,sum(invest_amt) as t_amt
              from fact_biz_csyy_invest
              where invest_time>=date_add(now(),-7) group by 1,2 ) a ) b
    where b.rank<=3
    

    结果集

    WechatIMG552.jpeg

    这样就简单方便地得出了结果,那么窗口函数都怎么使用呢。

    窗口函数的形式及用法

    开窗函数与聚合函数(count()/ sum() 等)一样,也是对行集组进行聚合计算,但它不是每组只返回一个值。开窗函数可以为每组返回多个值,因为开窗函数所执行聚合计算的行集组是窗口

    开窗函数的主要形式
    排序函数+ OVER ( PARTITION BY (分组字段) ORDER BY (组内排序字段) )

    相关文章

      网友评论

          本文标题:取数素养之窗口函数

          本文链接:https://www.haomeiwen.com/subject/qlelcftx.html