前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hive案例02-数值累加

Hive案例02-数值累加

作者头像
CoderJed
发布2018-09-13 10:53:25
2.5K0
发布2018-09-13 10:53:25
举报
文章被收录于专栏:Jed的技术阶梯

介绍Hive查询中数值累加的思路的方法

1. 需求分析

现有 hive 表 record, 内容如下:

代码语言:javascript
复制
hive> select * from record;
OK
A   2015-01     5
A   2015-01     15
B   2015-01     5
A   2015-01     8
B   2015-01     25
A   2015-01     5
A   2015-02     4
A   2015-02     6
B   2015-02     10
B   2015-02     5
A   2015-03     16
A   2015-03     22
B   2015-03     23
B   2015-03     10
B   2015-03     11

其中字段意义: userid(string) month(string) count(int) 分别代表: 用户id 月份 该月访问次数 需求: 统计每个用户截止到当月为止的最大单月访问次数和累计到该月的总访问次数 最终结果为:

代码语言:javascript
复制
用户    月份        本月访问次数      截止到当月总访问次数      截止到当月最大访问次数
A       2015-01     33              33                       33
A       2015-02     10              43                       33
A       2015-03     38              81                       38
B       2015-01     30              30                       30
B       2015-02     15              45                       30
B       2015-03     44              89                       44

2. 方法一

代码语言:javascript
复制
--(1)
# 先求出每个用户每个月总访问量
CREATE TABLE record_2 AS
SELECT userid, month, sum(count) as count 
FROM record
GROUP BY userid, month;

# record_2 表中内容为:
A   2015-01     33
A   2015-02     10
A   2015-03     38
B   2015-01     30
B   2015-02     15
B   2015-03     44

--(2)
SELECT t1.userid, t1.month, t1.count, sum(t2.count) sum_count, max(t2.count) max_count
FROM record_2 t1 INNER JOIN record_2 t2
ON t1.userid = t2.userid
WHERE t1.month >= t2.month 
GROUP BY t1.userid, t1.month, t1.count 
ORDER BY t1.userid, t1.month;

# 最终结果:
A   2015-01 33  33  33
A   2015-02 10  43  33
A   2015-03 38  81  38
B   2015-01 30  30  30
B   2015-02 15  45  30
B   2015-03 44  89  44

3. 方法二:使用Hive窗口函数max()、sum()

代码语言:javascript
复制
select userid, month, count, 
sum(count) over(partition by userid order by month) as sum_count,
max(count) over(partition by userid order by month) as max_count
from record_2;

结果:
A   2015-01 33  33  33
A   2015-02 10  43  33
A   2015-03 38  81  38
B   2015-01 30  30  30
B   2015-02 15  45  30
B   2015-03 44  89  44
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.12.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 介绍Hive查询中数值累加的思路的方法
  • 1. 需求分析
  • 2. 方法一
  • 3. 方法二:使用Hive窗口函数max()、sum()
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档