代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Hive
】
Hive窗口函数之累积值、平均值、首尾值的计算学习
作者:
toploveall
/ 发布于
2018/5/14
/
2823
Hive窗口函数可以计算一定范围内、一定值域内、或者一段时间内的累积和以及移动平均值等;可以结合聚集函数SUM() 、AVG()等使用;可以结合FIRST_VALUE() 和LAST_VALUE(),返回窗口的第一个和最后一个值。
Hive窗口函数可以计算一定范围内、一定值域内、或者一段时间内的累积和以及移动平均值等;可以结合聚集函数SUM() 、AVG()等使用;可以结合FIRST_VALUE() 和LAST_VALUE(),返回窗口的第一个和最后一个值。 - 如果只使用partition by子句,未指定order by的话,我们的聚合是分组内的聚合. - 使用了order by子句,未使用window子句的情况下,默认从起点到当前行. window子句: - PRECEDING:往前 - FOLLOWING:往后 - CURRENT ROW:当前行 - UNBOUNDED:起点,UNBOUNDED PRECEDING 表示从前面的起点, UNBOUNDED FOLLOWING:表示到后面的终点 1、计算累计和 统计1-12月的累积和,即1月为1月份的值,2月为1、2月份值的和,3月为123月份的和,12月为1-12月份值的和。 关键字解析: SUM(SUM(amount)) 内部的SUM(amount)为需要累加的值; ORDER BY month 按月份对查询读取的记录进行排序,就是窗口范围内的排序; ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 定义起点和终点,UNBOUNDED PRECEDING 为起点,表明从第一行开始, CURRENT ROW为默认值,就是这一句等价于: ROWS UNBOUNDED PRECEDING PRECEDING:在前 N 行的意思。 FOLLOWING:在后 N 行的意思。 1.1、计算所有月份的累计和 select pt_month,sum(amount) pay_amount,sum(sum(amount))over(order by pt_month) cumulative_amount from data_chushou_pay_info where pt_month between '2017-01' and '2017-11' and state=0 group by pt_month; select pt_month,sum(amount) pay_amount,sum(sum(amount))over(order by pt_month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) cumulative_amount from data_chushou_pay_info where pt_month between '2017-01' and '2017-11' and state=0 group by pt_month; 1.2、计算前3个月和本月共4个月的累积和 select pt_month,sum(amount) pay_amount,sum(sum(amount))over(order by pt_month ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) cumulative_amount from data_chushou_pay_info where pt_month between '2017-01' and '2017-11' and state=0 group by pt_month; select pt_month,sum(amount) pay_amount,sum(sum(amount))over(order by pt_month ROWS 3 PRECEDING) cumulative_amount from data_chushou_pay_info where pt_month between '2017-01' and '2017-11' and state=0 group by pt_month; 1.3、计算前1月后1月和本月共3个月的累积和 select pt_month,sum(amount) pay_amount,sum(sum(amount))over(order by pt_month ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) cumulative_amount from data_chushou_pay_info where pt_month between '2017-01' and '2017-11' and state=0 group by pt_month; 2、计算平均值 2.1、计算前1月后1月和本月共3个月各月总值的平均值 select pt_month,sum(amount) pay_amount,avg(sum(amount))over(order by pt_month ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) average_amount from data_chushou_pay_info where pt_month between '2017-01' and '2017-11' and state=0 group by pt_month; 2.2、计算前3个月和本月共4个月各月总值的平均值 select pt_month,sum(amount) pay_amount,avg(sum(amount))over(order by pt_month ROWS BETWEEN 3 PRECEDING AND CURRENT ROW) cumulative_amount from data_chushou_pay_info where pt_month between '2017-01' and '2017-11' and state=0 group by pt_month; 3、计算窗体第一条和最后一条的值 select pt_month,sum(amount) pay_amount,first_value(sum(amount))over(order by pt_month ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) first_amount,last_value(sum(amount))over(order by pt_month ROWS BETWEEN 1 PRECEDING AND 1 FOLLOWING) last_amount from data_chushou_pay_info where pt_month between '2017-01' and '2017-11' and state=0 group by pt_month;
试试其它关键字
同语言下
.
hive 数据清理--数据去重
.
实现一个字段包含另一个字段的查询
.
Hive窗口函数之累积值、平均值、首尾值的计算学习
.
Hive 累积和的计算
.
hive表创建,删除,导入数据,删除数据
.
INNER JOIN连接两个表、三个表、五个表的SQL语句
.
多表inner join用法
.
Hive创建临时表
.
分组排序 取top N
.
hive指定hadoop执行队列
可能有用的
.
hive 数据清理--数据去重
.
实现一个字段包含另一个字段的查询
.
Hive窗口函数之累积值、平均值、首尾值的计算学习
.
Hive 累积和的计算
.
hive表创建,删除,导入数据,删除数据
.
INNER JOIN连接两个表、三个表、五个表的SQL语句
.
多表inner join用法
.
Hive创建临时表
.
分组排序 取top N
.
hive指定hadoop执行队列
toploveall
贡献的其它代码
(
10
)
.
微信小程序之蓝牙开发(详细读数据、写数据、附源码)
.
Hive窗口函数之累积值、平均值、首尾值的计算学习
.
判断字符串是否为数字的函数
.
查询域名的 MX 记录
.
http://blog.csdn.net/high2011/article/details/5265
.
图片和二进制的转换
.
让上传文本框只读,browser按钮仍能用,并实现文件上
.
基于文件类型来创建链接样式
.
将c#控制台程序关闭按钮取消
.
根据Excel线程句柄得到ID并且关闭进程
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3