Hive分析窗口函数(一) SUM,AVG,MIN,MAX

Hive分析窗口函数(一) SUM,AVG,MIN,MAX

Hive中提供了越来越多的分析函数,用于完成负责的统计分析。抽时间将所有的分析窗口函数理一遍,将陆续发布。

今天先看几个基础的,SUM、AVG、MIN、MAX。

用于实现分组内所有和连续累积的统计。

数据准备

  1. CREATE EXTERNAL TABLE lxw1234 (
  2. cookieid string,
  3. createtime string, --day
  4. pv INT
  5. ) ROW FORMAT DELIMITED
  6. FIELDS TERMINATED BY ','
  7. stored as textfile location '/tmp/lxw11/';
  8. DESC lxw1234;
  9. cookieid STRING
  10. createtime STRING
  11. pv INT
  12. hive> select * from lxw1234;
  13. OK
  14. cookie1 2015-04-10 1
  15. cookie1 2015-04-11 5
  16. cookie1 2015-04-12 7
  17. cookie1 2015-04-13 3
  18. cookie1 2015-04-14 2
  19. cookie1 2015-04-15 4
  20. cookie1 2015-04-16 4

SUM — 注意,结果和ORDER BY相关,默认为升序

  1. SELECT cookieid,
  2. createtime,
  3. pv,
  4. SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime) AS pv1, -- 默认为从起点到当前行
  5. SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS pv2, --从起点到当前行,结果同pv1
  6. SUM(pv) OVER(PARTITION BY cookieid) AS pv3, --分组内所有行
  7. SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) AS pv4, --当前行+往前3行
  8. SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) AS pv5, --当前行+往前3行+往后1行
  9. SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS pv6 ---当前行+往后所有行
  10. FROM lxw1234;
  11. cookieid createtime pv pv1 pv2 pv3 pv4 pv5 pv6
  12. -----------------------------------------------------------------------------
  13. cookie1 2015-04-10 1 1 1 26 1 6 26
  14. cookie1 2015-04-11 5 6 6 26 6 13 25
  15. cookie1 2015-04-12 7 13 13 26 13 16 20
  16. cookie1 2015-04-13 3 16 16 26 16 18 13
  17. cookie1 2015-04-14 2 18 18 26 17 21 10
  18. cookie1 2015-04-15 4 22 22 26 16 20 8
  19. cookie1 2015-04-16 4 26 26 26 13 13 4

pv1: 分组内从起点到当前行的pv累积,如,11号的pv1=10号的pv+11号的pv, 12号=10号+11号+12号
pv2: 同pv1
pv3: 分组内(cookie1)所有的pv累加
pv4: 分组内当前行+往前3行,如,11号=10号+11号, 12号=10号+11号+12号, 13号=10号+11号+12号+13号, 14号=11号+12号+13号+14号
pv5: 分组内当前行+往前3行+往后1行,如,14号=11号+12号+13号+14号+15号=5+7+3+2+4=21
pv6: 分组内当前行+往后所有行,如,13号=13号+14号+15号+16号=3+2+4+4=13,14号=14号+15号+16号=2+4+4=10

如果不指定ROWS BETWEEN,默认为从起点到当前行;
如果不指定ORDER BY,则将分组内所有值累加;
关键是理解ROWS BETWEEN含义,也叫做WINDOW子句
PRECEDING:往前
FOLLOWING:往后
CURRENT ROW:当前行
UNBOUNDED:起点,UNBOUNDED PRECEDING 表示从前面的起点, UNBOUNDED FOLLOWING:表示到后面的终点

–其他AVG,MIN,MAX,和SUM用法一样。

  1. --AVG
  2. SELECT cookieid,
  3. createtime,
  4. pv,
  5. AVG(pv) OVER(PARTITION BY cookieid ORDER BY createtime) AS pv1, -- 默认为从起点到当前行
  6. AVG(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS pv2, --从起点到当前行,结果同pv1
  7. AVG(pv) OVER(PARTITION BY cookieid) AS pv3, --分组内所有行
  8. AVG(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) AS pv4, --当前行+往前3行
  9. AVG(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) AS pv5, --当前行+往前3行+往后1行
  10. AVG(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS pv6 ---当前行+往后所有行
  11. FROM lxw1234;
  12. cookieid createtime pv pv1 pv2 pv3 pv4 pv5 pv6
  13. -----------------------------------------------------------------------------
  14. cookie1 2015-04-10 1 1.0 1.0 3.7142857142857144 1.0 3.0 3.7142857142857144
  15. cookie1 2015-04-11 5 3.0 3.0 3.7142857142857144 3.0 4.333333333333333 4.166666666666667
  16. cookie1 2015-04-12 7 4.333333333333333 4.333333333333333 3.7142857142857144 4.333333333333333 4.0 4.0
  17. cookie1 2015-04-13 3 4.0 4.0 3.7142857142857144 4.0 3.6 3.25
  18. cookie1 2015-04-14 2 3.6 3.6 3.7142857142857144 4.25 4.2 3.3333333333333335
  19. cookie1 2015-04-15 4 3.6666666666666665 3.6666666666666665 3.7142857142857144 4.0 4.0 4.0
  20. cookie1 2015-04-16 4 3.7142857142857144 3.7142857142857144 3.7142857142857144 3.25 3.25 4.0
  1. --MIN
  2. SELECT cookieid,
  3. createtime,
  4. pv,
  5. MIN(pv) OVER(PARTITION BY cookieid ORDER BY createtime) AS pv1, -- 默认为从起点到当前行
  6. MIN(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS pv2, --从起点到当前行,结果同pv1
  7. MIN(pv) OVER(PARTITION BY cookieid) AS pv3, --分组内所有行
  8. MIN(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) AS pv4, --当前行+往前3行
  9. MIN(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) AS pv5, --当前行+往前3行+往后1行
  10. MIN(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS pv6 ---当前行+往后所有行
  11. FROM lxw1234;
  12. cookieid createtime pv pv1 pv2 pv3 pv4 pv5 pv6
  13. -----------------------------------------------------------------------------
  14. cookie1 2015-04-10 1 1 1 1 1 1 1
  15. cookie1 2015-04-11 5 1 1 1 1 1 2
  16. cookie1 2015-04-12 7 1 1 1 1 1 2
  17. cookie1 2015-04-13 3 1 1 1 1 1 2
  18. cookie1 2015-04-14 2 1 1 1 2 2 2
  19. cookie1 2015-04-15 4 1 1 1 2 2 4
  20. cookie1 2015-04-16 4 1 1 1 2 2 4
  1. ----MAX
  2. SELECT cookieid,
  3. createtime,
  4. pv,
  5. MAX(pv) OVER(PARTITION BY cookieid ORDER BY createtime) AS pv1, -- 默认为从起点到当前行
  6. MAX(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS pv2, --从起点到当前行,结果同pv1
  7. MAX(pv) OVER(PARTITION BY cookieid) AS pv3, --分组内所有行
  8. MAX(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) AS pv4, --当前行+往前3行
  9. MAX(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) AS pv5, --当前行+往前3行+往后1行
  10. MAX(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS pv6 ---当前行+往后所有行
  11. FROM lxw1234;
  12. cookieid createtime pv pv1 pv2 pv3 pv4 pv5 pv6
  13. -----------------------------------------------------------------------------
  14. cookie1 2015-04-10 1 1 1 7 1 5 7
  15. cookie1 2015-04-11 5 5 5 7 5 7 7
  16. cookie1 2015-04-12 7 7 7 7 7 7 7
  17. cookie1 2015-04-13 3 7 7 7 7 7 4
  18. cookie1 2015-04-14 2 7 7 7 7 7 4
  19. cookie1 2015-04-15 4 7 7 7 7 7 4
  20. cookie1 2015-04-16 4 7 7 7 4 4 4

其他函数的介绍将陆续整理发布。。

转载于:https://www.cnblogs.com/mobiwangyue/p/8087031.html

Hive分析窗口函数(一) SUM,AVG,MIN,MAX相关推荐

  1. Oracle分析函数三——SUM,AVG,MIN,MAX,COUNT

    Oracle 分析函数--SUM,AVG,MIN,MAX,COUNT SUM 功能描述:该函数计算组中表达式的累积和. SAMPLE :下例计算同一经理下员工的薪水累积值 MIN 功能描述:在一个组中 ...

  2. MySQL核心之分组函数(sum() avg() min() max() distinct count() )

    文章目录 分组函数的介绍 简单的使用 参数支持哪些类型 是否忽略null 值 和distinct搭配 count函数 和分组函数一同查询的字段有限制 分组函数的介绍 功能:用作统计使用,又称为聚合函数 ...

  3. Hive分析窗口函数系列文章

    分析窗口函数应用场景: (1)用于分区排序 (2)动态Group By (3)Top N (4)累计计算 (5)层次查询 Hive分析窗口函数(一) SUM,AVG,MIN,MAX Hive中提供了越 ...

  4. Hive分析窗口函数

    分析窗口函数应用场景: (1)用于分区排序 (2)动态Group By (3)Top N (4)累计计算 (5)层次查询 Hive分析窗口函数(一) SUM,AVG,MIN,MAX Hive中提供了越 ...

  5. Hive分析窗口函数(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP

    GROUPING SETS 该关键字可以实现同一数据集的多重group by操作.事实上GROUPING SETS是多个GROUP BY进行UNION ALL操作的简单表达,它仅仅使用一个stage完 ...

  6. Hive学习(15)-Hive分析窗口函数(三)

    原文来自:扎心了,老铁的<Hive学习之路 (十五)Hive分析窗口函数(三) CUME_DIST和PERCENT_RANK>

  7. mysql min函数 结果全为null_MySQL ----- 聚集函数(AVG,SUM,COUNT,MIN,MAX) (十一)

    为了汇总数据而不把实际的检索出来,MySQL 提供了专门的函数,聚集函数 好处:可以将检索数据进行分析和报表生成 一.聚集函数(aggregate function): 运行在行组上,计算和返回单个值 ...

  8. Hive 分析窗口函数

    窗口函数 窗口函数一般就是说over()函数,其窗口是由一个OVER字句定义的多行记录. 窗口函数有两种形式: over(distribute by 分区字段 sort by 排序字段) distri ...

  9. hive窗口函数分组排序并取第一个值_Hive(七)Hive分析窗口函数

    cookie1,2015-04-10,1 cookie1,2015-04-11,5 cookie1,2015-04-12,7 cookie1,2015-04-13,3 cookie1,2015-04- ...

最新文章

  1. 使用Eclipse+PyDev+EclipseHtmlEditor搭建Django开发环境
  2. arduino char*转string_【201期】面试官:String长度有限制吗?是多少?还好我看过...
  3. pyqt5 实现右键自定义_《快速掌握PyQt5》第十七章 事件处理
  4. 2018-6-19bash编程之循环
  5. 卫星通信系统按照工作轨道分类
  6. 文件传至迅雷服务器,迅雷传输SDK开发文档
  7. interspeech2021论文集下载地址
  8. 安卓改机,改串的研究
  9. ndo2db: Warning: Retrying message send. This can occur
  10. 使用Python自动化管理Exchange邮箱
  11. 电脑时间倒流,程序拒绝穿越:应用程序发生异常 未知的软件异常(0xe06d7363)
  12. ubuntu php mysql 乱码,ubuntu 服务器字符乱码问题
  13. 微信小程序开发报错及解决记录
  14. php生成word文件
  15. MdEditor富文本编辑器下载
  16. 金融科技:人行二代征信和百行征信接入方案
  17. 【计算机视觉40例】案例38:驾驶员疲劳监测
  18. stata的外部命令lasso安装下载资源ado命令lassopage lasso回归出错r2,网络用不了
  19. 计算机叫醒服务英语,叫醒服务酒店英语对话
  20. 数据结构之顺序表(C语言)

热门文章

  1. mongodb与java结合_MongoDB初探系列之四:MongoDB与Java共舞
  2. Shell(10)——sed(2)
  3. python面向对象(3)
  4. 可被三整除的最大和—leetcode1262
  5. |(与或移位等)的工程运用
  6. 8086汇编常用代码总结(个人向),包含换行函数(过程),执行输出,结束程序
  7. 大神对飞控精准高度估计算法解读
  8. Matrix-Tree (生成树计数)
  9. HDU Problem - 2732 Leapin' Lizards(最大流,拆点建边)
  10. 宏定义和Typedef区别?