hive over窗口函数使用
前提:
按照OVER() 进行partion,然后每个分组执行函数计算。
最后为每一个分组增加对应的字段数据。最后原始数据行数
没有改变,可以在此基础上继续使用。
一、计算累计和
统计1-12月的累积销量,即1月为1月份的值,2月为1.2月份值的和,3月为123月份的和,12月为1-12月份值的和
SELECT
month,SUM(amount) month_amount,
SUM( SUM(amount)) OVER (ORDER BY month ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) AS cumulative_amount
FROM table_name
GROUP BY month
ORDER BY month;
其中:
SUM( SUM(amount)) 内部的SUM(amount)为需要累加的值,在上述可以换为 month_amount
ORDER BY month 按月份对查询读取的记录进行排序,就是窗口范围内的排序
ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW 定义起点和终点,UNBOUNDED PRECEDING 为起点,表明从第一行开始, CURRENT ROW为默认值,就是这一句等价于:
ROWS UNBOUNDED PRECEDING
PRECEDING:在前 N 行的意思。
FOLLOWING:在后 N 行的意思。
注意以下几点:
1)order by 后面省去了窗口子句,还原起来就是order by xxx range between unbounded preceding and current row.
2)partition by之后没有使用order by,窗口大小默认就是整个分组
二、排序行号
SELECT
column_name,
RANK() OVER (ORDER BY column_name DESC) AS rank,
DENSE_RANK() OVER (ORDER BY SUM(column_name) DESC) AS dense_rank
FROM table_name
RANK()在出现等级相同的元素时预留为空,DENSE_RANK()不会。
Eg:某产品类型有两个并列第一
RANK():第一二为1,第三位3
DENSE_RANK():第一二为1,第三位2
SELECT
ROW_NUMBER() OVER (ORDER BY column_name DESC)AS row_name
FROM table_name;
上面两个的区别?如下:
(1)Rank函数返回一个唯一的值,除非遇到相同的数据时,此时所有相同数据的排名是一样的,
同时会在最后一条相同记录和下一条不同记录的排名之间空出排名。
(2)Dense_rank函数返回一个唯一的值,除非当碰到相同数据时,此时所有相同数据的排名都是一样的。
(3)Row_number函数返回一个唯一的值,当碰到相同数据时,排名按照记录集中记录的顺序依次递增。
三、过滤数据
Plain Text
select *
from (SELECTevent,pt,sv,dm,time,PERCENTILE_APPROX(time, 0.90) OVER (PARTITION by event,pt,sv,dm) time_percent
FROMlog.xm_sdk_log
WHEREdt = '20160427'
ANDtime IS NOT NULL)tmpwhere time > time_percent
hive over窗口函数使用相关推荐
- Hive分析窗口函数(一) SUM,AVG,MIN,MAX
Hive分析窗口函数(一) SUM,AVG,MIN,MAX 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 的窗口函数
本文首发于:微信公众号[大数据每日哔哔,文章:Hive SQL 窗口函数 在 SQL 中有一类函数叫做聚合函数,例如 sum().avg().max().min() 等等,这类函数可以将多行数据按照规 ...
- Hive SQL 窗口函数
本文首发:大数据每日哔哔-Hive SQL 窗口函数 Hive 的窗口函数 在 SQL 中有一类函数叫做聚合函数,例如 sum().avg().max().min() 等等,这类函数可以将多行数据按照 ...
- HIVE:窗口函数,用sql语句查询MySQL安装路径和版本
数据大师: Jmx's Blog | Keep it Simple and Stupid! 猴子 - 知乎公众号(猴子数据分析)著有畅销书<数据分析思维>科普中国专家 回答数 647,获得 ...
- hive的窗口函数详解
1.1 hive窗口函数 窗口函数是什么鬼? 窗口函数指定了函数工作的数据窗口大小(当前行的上下多少行),这个数据窗口大小可能会随着行的变化而变化.窗口函数和聚合函数区别? 窗口函数对于每个组返回多行 ...
- Hive分析窗口函数
分析窗口函数应用场景: (1)用于分区排序 (2)动态Group By (3)Top N (4)累计计算 (5)层次查询 Hive分析窗口函数(一) SUM,AVG,MIN,MAX Hive中提供了越 ...
- Hive学习(15)-Hive分析窗口函数(三)
原文来自:扎心了,老铁的<Hive学习之路 (十五)Hive分析窗口函数(三) CUME_DIST和PERCENT_RANK>
- 使用Hive的窗口函数进行数据分析——以股票市场分析为例
声明:本文主要是实现利用Hive常用的窗口函数和一些数据分析思维分析数据,只是套用在股票数据的例子上,因此并不适用于提高投资技巧! 我们先看一下常用Hive中常用的窗口: PRECEDING:往前 F ...
最新文章
- 干货 | 2021年,深度学习还有哪些研究方向可以做?
- Nat. Genet. | 基于CRISPRi技术检测增强子与启动子相互作用
- android jar 无法访问r文件,android项目中gen目录不能自动生成R.java的原因
- 单位员工通讯录管理系统(线性表的应用)
- 【错误记录】eclipse,android,logcat日志无法打印,真机调试
- android miui9.0改装条例,安卓的通知适配(更新至9.0)
- linux内核percpu变量声明,Linux kernel percpu变量解析
- java that关键字_Java中this关键字的几种用法
- 送书 | 一本针对零基础 AI 学习的书:Python入门到人工智能实战
- nodejs通过响应回写的方式渲染页面资源
- java图片转ASCII码_将图片转化成对应的Ascii字符图片
- 薛定谔 Maestro教程--用户界面 | 结构编辑 | 测量距离角度
- 求一个数的平方c语言函数实现,C++中数的平方是什么函数?
- 核爆rpg学院站计算机,给新人的一点收集建议
- tools-centos-基本配置
- 简体中文转换为繁体中文
- Web网站中利用JavaScript中ActiveXObject对象获取硬件信息(显示器数量、分辨率)从而进行单双屏跳转...
- Bat 批处理之 for/f 详解
- 2021.9.17 zookeeper Linux 常用命令
- Unity脚本介绍和常用API
热门文章
- 港藤商贸插上世纪福星珠宝软件翅膀
- mysql自增id修改最大值_MySQL自增ID最大值被使用
- 计算机上可移动磁盘,win10系统我的电脑出现很多个可移动磁盘的解决方法
- 大话手游网页无法链接到服务器,大话西游手游网页版无法运行解决办法
- windows下gdal的java开发环境搭建
- Scratch基础知识总结(运动~事件)
- 移动硬盘数据丢失恢复教程
- 由“正方”jiam、jiemi之逆向思及Base64之逆编码表
- oracle怎么么创建索引,Oracle 创建索引,oracle索引怎么创建
- macbook air,仅安装win7下开启触控板右键(安装bootcamp异常,或没有触控板选项)