Hive分析窗口函数(一) SUM,AVG,MIN,MAX
Hive分析窗口函数(一) SUM,AVG,MIN,MAX
Hive分析窗口函数(一) SUM,AVG,MIN,MAX
Hive中提供了越来越多的分析函数,用于完成负责的统计分析。抽时间将所有的分析窗口函数理一遍,将陆续发布。
今天先看几个基础的,SUM、AVG、MIN、MAX。
用于实现分组内所有和连续累积的统计。
数据准备
- CREATE EXTERNAL TABLE lxw1234 (
- cookieid string,
- createtime string, --day
- pv INT
- ) ROW FORMAT DELIMITED
- FIELDS TERMINATED BY ','
- stored as textfile location '/tmp/lxw11/';
- DESC lxw1234;
- cookieid STRING
- createtime STRING
- pv INT
- hive> select * from lxw1234;
- OK
- cookie1 2015-04-10 1
- cookie1 2015-04-11 5
- cookie1 2015-04-12 7
- cookie1 2015-04-13 3
- cookie1 2015-04-14 2
- cookie1 2015-04-15 4
- cookie1 2015-04-16 4
SUM — 注意,结果和ORDER BY相关,默认为升序
- SELECT cookieid,
- createtime,
- pv,
- SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime) AS pv1, -- 默认为从起点到当前行
- SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS pv2, --从起点到当前行,结果同pv1
- SUM(pv) OVER(PARTITION BY cookieid) AS pv3, --分组内所有行
- SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) AS pv4, --当前行+往前3行
- SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) AS pv5, --当前行+往前3行+往后1行
- SUM(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS pv6 ---当前行+往后所有行
- FROM lxw1234;
- cookieid createtime pv pv1 pv2 pv3 pv4 pv5 pv6
- -----------------------------------------------------------------------------
- cookie1 2015-04-10 1 1 1 26 1 6 26
- cookie1 2015-04-11 5 6 6 26 6 13 25
- cookie1 2015-04-12 7 13 13 26 13 16 20
- cookie1 2015-04-13 3 16 16 26 16 18 13
- cookie1 2015-04-14 2 18 18 26 17 21 10
- cookie1 2015-04-15 4 22 22 26 16 20 8
- 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用法一样。
- --AVG
- SELECT cookieid,
- createtime,
- pv,
- AVG(pv) OVER(PARTITION BY cookieid ORDER BY createtime) AS pv1, -- 默认为从起点到当前行
- AVG(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS pv2, --从起点到当前行,结果同pv1
- AVG(pv) OVER(PARTITION BY cookieid) AS pv3, --分组内所有行
- AVG(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) AS pv4, --当前行+往前3行
- AVG(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) AS pv5, --当前行+往前3行+往后1行
- AVG(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS pv6 ---当前行+往后所有行
- FROM lxw1234;
- cookieid createtime pv pv1 pv2 pv3 pv4 pv5 pv6
- -----------------------------------------------------------------------------
- cookie1 2015-04-10 1 1.0 1.0 3.7142857142857144 1.0 3.0 3.7142857142857144
- cookie1 2015-04-11 5 3.0 3.0 3.7142857142857144 3.0 4.333333333333333 4.166666666666667
- cookie1 2015-04-12 7 4.333333333333333 4.333333333333333 3.7142857142857144 4.333333333333333 4.0 4.0
- cookie1 2015-04-13 3 4.0 4.0 3.7142857142857144 4.0 3.6 3.25
- cookie1 2015-04-14 2 3.6 3.6 3.7142857142857144 4.25 4.2 3.3333333333333335
- cookie1 2015-04-15 4 3.6666666666666665 3.6666666666666665 3.7142857142857144 4.0 4.0 4.0
- cookie1 2015-04-16 4 3.7142857142857144 3.7142857142857144 3.7142857142857144 3.25 3.25 4.0
- --MIN
- SELECT cookieid,
- createtime,
- pv,
- MIN(pv) OVER(PARTITION BY cookieid ORDER BY createtime) AS pv1, -- 默认为从起点到当前行
- MIN(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS pv2, --从起点到当前行,结果同pv1
- MIN(pv) OVER(PARTITION BY cookieid) AS pv3, --分组内所有行
- MIN(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) AS pv4, --当前行+往前3行
- MIN(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) AS pv5, --当前行+往前3行+往后1行
- MIN(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS pv6 ---当前行+往后所有行
- FROM lxw1234;
- cookieid createtime pv pv1 pv2 pv3 pv4 pv5 pv6
- -----------------------------------------------------------------------------
- cookie1 2015-04-10 1 1 1 1 1 1 1
- cookie1 2015-04-11 5 1 1 1 1 1 2
- cookie1 2015-04-12 7 1 1 1 1 1 2
- cookie1 2015-04-13 3 1 1 1 1 1 2
- cookie1 2015-04-14 2 1 1 1 2 2 2
- cookie1 2015-04-15 4 1 1 1 2 2 4
- cookie1 2015-04-16 4 1 1 1 2 2 4
- ----MAX
- SELECT cookieid,
- createtime,
- pv,
- MAX(pv) OVER(PARTITION BY cookieid ORDER BY createtime) AS pv1, -- 默认为从起点到当前行
- MAX(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS pv2, --从起点到当前行,结果同pv1
- MAX(pv) OVER(PARTITION BY cookieid) AS pv3, --分组内所有行
- MAX(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) AS pv4, --当前行+往前3行
- MAX(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN 3 PRECEDING AND 1 FOLLOWING) AS pv5, --当前行+往前3行+往后1行
- MAX(pv) OVER(PARTITION BY cookieid ORDER BY createtime ROWS BETWEEN CURRENT ROW AND UNBOUNDED FOLLOWING) AS pv6 ---当前行+往后所有行
- FROM lxw1234;
- cookieid createtime pv pv1 pv2 pv3 pv4 pv5 pv6
- -----------------------------------------------------------------------------
- cookie1 2015-04-10 1 1 1 7 1 5 7
- cookie1 2015-04-11 5 5 5 7 5 7 7
- cookie1 2015-04-12 7 7 7 7 7 7 7
- cookie1 2015-04-13 3 7 7 7 7 7 4
- cookie1 2015-04-14 2 7 7 7 7 7 4
- cookie1 2015-04-15 4 7 7 7 7 7 4
- cookie1 2015-04-16 4 7 7 7 4 4 4
其他函数的介绍将陆续整理发布。。
转载于:https://www.cnblogs.com/mobiwangyue/p/8087031.html
Hive分析窗口函数(一) SUM,AVG,MIN,MAX相关推荐
- Oracle分析函数三——SUM,AVG,MIN,MAX,COUNT
Oracle 分析函数--SUM,AVG,MIN,MAX,COUNT SUM 功能描述:该函数计算组中表达式的累积和. SAMPLE :下例计算同一经理下员工的薪水累积值 MIN 功能描述:在一个组中 ...
- MySQL核心之分组函数(sum() avg() min() max() distinct count() )
文章目录 分组函数的介绍 简单的使用 参数支持哪些类型 是否忽略null 值 和distinct搭配 count函数 和分组函数一同查询的字段有限制 分组函数的介绍 功能:用作统计使用,又称为聚合函数 ...
- Hive分析窗口函数系列文章
分析窗口函数应用场景: (1)用于分区排序 (2)动态Group By (3)Top N (4)累计计算 (5)层次查询 Hive分析窗口函数(一) SUM,AVG,MIN,MAX Hive中提供了越 ...
- Hive分析窗口函数
分析窗口函数应用场景: (1)用于分区排序 (2)动态Group By (3)Top N (4)累计计算 (5)层次查询 Hive分析窗口函数(一) SUM,AVG,MIN,MAX Hive中提供了越 ...
- Hive分析窗口函数(五) GROUPING SETS,GROUPING__ID,CUBE,ROLLUP
GROUPING SETS 该关键字可以实现同一数据集的多重group by操作.事实上GROUPING SETS是多个GROUP BY进行UNION ALL操作的简单表达,它仅仅使用一个stage完 ...
- Hive学习(15)-Hive分析窗口函数(三)
原文来自:扎心了,老铁的<Hive学习之路 (十五)Hive分析窗口函数(三) CUME_DIST和PERCENT_RANK>
- mysql min函数 结果全为null_MySQL ----- 聚集函数(AVG,SUM,COUNT,MIN,MAX) (十一)
为了汇总数据而不把实际的检索出来,MySQL 提供了专门的函数,聚集函数 好处:可以将检索数据进行分析和报表生成 一.聚集函数(aggregate function): 运行在行组上,计算和返回单个值 ...
- Hive 分析窗口函数
窗口函数 窗口函数一般就是说over()函数,其窗口是由一个OVER字句定义的多行记录. 窗口函数有两种形式: over(distribute by 分区字段 sort by 排序字段) distri ...
- 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- ...
最新文章
- 使用Eclipse+PyDev+EclipseHtmlEditor搭建Django开发环境
- arduino char*转string_【201期】面试官:String长度有限制吗?是多少?还好我看过...
- pyqt5 实现右键自定义_《快速掌握PyQt5》第十七章 事件处理
- 2018-6-19bash编程之循环
- 卫星通信系统按照工作轨道分类
- 文件传至迅雷服务器,迅雷传输SDK开发文档
- interspeech2021论文集下载地址
- 安卓改机,改串的研究
- ndo2db: Warning: Retrying message send. This can occur
- 使用Python自动化管理Exchange邮箱
- 电脑时间倒流,程序拒绝穿越:应用程序发生异常 未知的软件异常(0xe06d7363)
- ubuntu php mysql 乱码,ubuntu 服务器字符乱码问题
- 微信小程序开发报错及解决记录
- php生成word文件
- MdEditor富文本编辑器下载
- 金融科技:人行二代征信和百行征信接入方案
- 【计算机视觉40例】案例38:驾驶员疲劳监测
- stata的外部命令lasso安装下载资源ado命令lassopage lasso回归出错r2,网络用不了
- 计算机叫醒服务英语,叫醒服务酒店英语对话
- 数据结构之顺序表(C语言)