美文网首页hive
Hive案例02-数值累加

Hive案例02-数值累加

作者: CoderJed | 来源:发表于2017-12-25 13:25 被阅读298次

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

1. 需求分析

现有 hive 表 record, 内容如下:

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 月份 该月访问次数
需求:
统计每个用户截止到当月为止的最大单月访问次数和累计到该月的总访问次数
最终结果为:

用户    月份        本月访问次数      截止到当月总访问次数      截止到当月最大访问次数
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. 方法一

--(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()

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

相关文章

  • Hive案例02-数值累加

    介绍Hive查询中数值累加的思路的方法 1. 需求分析 现有 hive 表 record, 内容如下: 其中字段意...

  • 大数据开发之Hive篇2-Hive数据类型及文件格式

    备注:Hive 版本 2.1.1 一.Hive的数据类型 1.1 数值类型 Hive的数值类型与关系型数据库的My...

  • c#循环详解

    案例 (计算1到100的累加和) image.png 案例 (计算1到100的累加和) 案例 (计算1到100的累...

  • Hive案例

    综合Hive知识,复习巩固。 需求描述 针对销售数据,完成统计: 按年统计销售额 销售金额在 10W 以上的订单 ...

  • Hive案例

    一、基站掉话率统计 需求分析统计基站掉话率,找出掉话率最高的前10个基站 输入样例 输出样例 示例代码 二、单词统...

  • python学习:for循环

    1、数值循环 题目:从1-100累加 print("计算1+2+3+……+100的结果为:") result = ...

  • javascript笔试题

    求质数 输入随机数进行累加或累乘 构造方法案例

  • 敲黑板------十个入门级别的小案例,看不懂的小伙伴要注意了!

    案例一:排列组合 案例二:阶梯求和 案例三:求整数值 案例四:判断天数 案例五:整数排序 案例六:输出字符画 案例...

  • Hive练习案例

    案例一: 统计基站掉话率:原始数据格式如下所示:数据分为十个字段,掉话率=掉话/通话 思路:按照基站分组,聚合...

  • 数值累加到 大于20的当前数

    public class Demo17{ public static void main(String[] a...

网友评论

    本文标题:Hive案例02-数值累加

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