Hive--笔试题01--窗口分析函数实现

爱被打了一巴掌 2022-01-07 04:35 341阅读 0赞

有以下一份数据:

  1. A,2015-01,5
  2. A,2015-01,15
  3. B,2015-01,5
  4. A,2015-01,8
  5. B,2015-01,25
  6. A,2015-01,5
  7. A,2015-02,4
  8. A,2015-02,6
  9. B,2015-02,10
  10. B,2015-02,5
  11. A,2015-03,16
  12. A,2015-03,22
  13. B,2015-03,23
  14. B,2015-03,10
  15. B,2015-03,11

数据的字段定义是:

name,month,pv

数据的字段意义是:

用户,月份,访问量

现在来看需求:

每个用户截止到每月为止的最大单月访问次数和累计到该月的总访问次数

结果如下:

  1. 用户 月份 当月访问次数 最大访问次数 总访问次数
  2. A 2015-01 33 33 33
  3. A 2015-02 10 33 43
  4. A 2015-03 38 38 81
  5. B 2015-01 30 30 30
  6. B 2015-02 15 30 45
  7. B 2015-03 44 44 89

利用窗口分析函数实现:

  1. select
  2. a.id,
  3. a.month,
  4. a.pv,
  5. sum(a.pv) over (partition by a.id order by a.month rows between unbounded preceding and current row) as sumpv,
  6. max(a.pv) over (partition by a.id order by a.month rows between unbounded preceding and current row) as maxpv
  7. from
  8. (select b.id as id, b.month as month, sum(b.pv) as pv from exercise1 b group by b.id, b.month) a;

发表评论

表情:
评论列表 (有 0 条评论,341人围观)

还没有评论,来说两句吧...

相关阅读