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

取数素养之窗口函数

作者: 进击的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 (组内排序字段) )

相关文章

  • 取数素养之窗口函数

    分组统计 top n 的需求 场景需求:需要找出每个品类下购买金额top 10的用户,而group by只对聚合的...

  • Spark-窗口函数实现原理及各种写法

    平时使用窗口函数最多的情况就是-根据某个字段分组,取组内的TopN(也可能是随机取N条),在没接触窗口函数之前,使...

  • 方法

    用到的一些函数 1.取随机数的函数 这是一个取1--100的随机数2.取绝对值的函数 表示取a和b 的绝对值3.开...

  • 第十四节-排序优化

    优化快速排序 三数取中法,九数取中法 随机法 限制递归深度 自己实现函数调用栈,手动模拟入栈出栈 举例分析排序函数...

  • Eprime 编程笔记

    E—prime 变量: dim x as integer dim定义 Msgbox弹出窗口 函数: rnd随机数(...

  • Hive常用函数

    一、窗口函数 1、窗口函数基础结构 窗口函数 = 分析函数 + over函数分析函数:sum ( )、max ( ...

  • 窗口函数(OVER 子句)

    窗口函数简介 数据准备 问题描述 解答 窗口函数简介 窗口函数是 SQL 中一类特别的函数。 和聚合函数相似,窗口...

  • 高级函数_分析函数与窗口函数

    高级函数_分析函数与窗口函数 分析函数往往与窗口函数一起使用,over()为窗口函数 一、分析函数 1.01、排名...

  • hive分组取随机数

    hive取随机的数据,可以使用rand()函数,用rand()对数据排序,取topN如果要用到分组取随机数,比如每...

  • 数仓--Hive-面试之Hive分析窗口函数

    数据准备 分析 pv1: 分组内从起点到当前行的pv累积,如,11号的pv1=10号的pv+11号的pv, 12号...

网友评论

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

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