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窗口函数之累积值、平均值、首尾值的计算学习相关推荐

  1. Hive中分组取前N个值

    分享两篇文章,结合看更清楚一点. 背景 假设有一个学生各门课的成绩的表单,应用hive取出每科成绩前100名的学生成绩. 这个就是典型在分组取Top N的需求. 解决思路 对于取出每科成绩前100名的 ...

  2. 大数据技术-hive窗口函数详解

    有不少同学一听这个标题,hive窗口函数是什么鬼?没听说过还有窗口函数这个东西啊,其实它的用处可大了,下面听小千慢慢道来. hive窗口函数 窗口函数指定了函数工作的数据窗口大小(当前行的上下多少行) ...

  3. hive窗口函数使用

    hive窗口函数的使用 前言 一.hive窗口函数语法 1.over()窗口函数的语法结构 1.1.over()函数中的三个函数讲解 2.常与over()一起使用的分析函数 2.1.聚合类 2.2.排 ...

  4. hive 窗口函数(持续更新)

    hive窗口函数语法 avg().sum().max().min()等是分析函数,而over()才是窗口函数,下面我们来看看over()窗口函数的语法结构.及常与over()一起使用的分析函数: 1. ...

  5. HIVE 窗口函数和分析函数

    **HIVE 窗口函数和分析函数** 第一篇,试试水: 一.介绍 分析函数用于计算基于组的某种聚合值,它和聚合函数的不同之处是:对于每个组返回多行,而聚合函数对于每个组只返回一行. 开窗函数指定了分析 ...

  6. R线性回归模型构建:残差值、回归值、预测域、置信区间

    R线性回归模型构建:残差值.回归值.预测域.置信区间 简单线性回归(simple linear-regression)是预测连续变量的最简单,最流行的技术.它的前提假设是:结果与预测变量之间存在线性关 ...

  7. mysql按照学生分组查询_将student表按照gender字段值进行分组查询,并计算每个分组中有多少名学生_学小易找答案...

    [简答题]查询student表中一共有多少条记录 [简答题]在department表和employee表之间分别使用where查询.自连接查询 [简答题]使用DESC查看学生表和班级表 [简答题]在表 ...

  8. 机器学习实战(Machine Learning in Action)学习笔记————06.k-均值聚类算法(kMeans)学习笔记...

    机器学习实战(Machine Learning in Action)学习笔记----06.k-均值聚类算法(kMeans)学习笔记 关键字:k-均值.kMeans.聚类.非监督学习 作者:米仓山下 时 ...

  9. C#,彩票数学——遗漏、和值、AC值、频率、直落号、大小、奇偶、质合、八卦、五行等常用彩票分析术语的统计学解释

    一.概述 科学的.有价值的彩票指数,都源自高深的数学功底,统计数据显现出一定规律的指数才具有参考价值. 提示:指数的计算一般是针对彩票主区(双色球为红球区,大乐透为前区)而言.特选号不被计算在内. 二 ...

最新文章

  1. ndk use of undeclared identifier #39malloc#39
  2. java 两个stream合并_Java Stream 流如何进行合并操作
  3. js 获取 屏幕 可用高度...
  4. Linux centos openshift安装教程整理
  5. PHP的display_errors与error_reporting
  6. C++11新特性学习
  7. 8行代码教你搞定导航控制器全屏滑动返回效果 ————转载
  8. APP界面的数据可视化设计临摹学习模板
  9. Linux中删除文件夹和文件的命令
  10. 计算机主板过热报警,利用电脑主板BIOS的报警声音辨别电脑故障
  11. 朝花夕拾-不务正业的大学生做了什么比赛?
  12. Cocoa Touch基础
  13. MySQL 8.0+版本 导入.csv文件错误,出错号:1148 The used command is not allowed with this MySQL version问题
  14. 晨风机器人插件编辑器_晨风机器人文本编辑器
  15. 《团队软件过程(修订版)》—第2章2.3节团队是什么
  16. 智能外呼系统到底有多智能
  17. 【sas】tabulate报表
  18. .net 导入Excel2007
  19. 一个浙大教授让人发冷汗的讲演
  20. Java 栈类(stack.class)

热门文章

  1. java怎么加工具栏_Java入门-考无忧教你添加工具栏
  2. 计算机科学与技术专业导向ppt,计算机科学与技术专业情况汇报.ppt
  3. 1688API大全、商品详情调用数据返回展示
  4. Day8 - 集合和字符串
  5. 中职计算机应用普测考试试题及答案,2017职称计算机考试WPS_Office检测练习及答案9...
  6. 初次戴隐形眼镜 须知。
  7. Photoshop系列_04DIY熊猫头表情包
  8. ReferenceError: document is not defined
  9. 基于微信小程序新冠疫苗预约系统(微信小程序)
  10. VC++:鼠标的使用