Hive 窗口函数

1、Hive窗口函数

窗口函数是一组特殊的函数
它能扫描多个输入行以计算每个输出值
可为每行数据都生成一行结果记录
窗口函数按功能划分可分为三类:排序、聚合、分析

function(arg1....) OVER([PARTITION BY <...>][ORDER BY<...>[<window clause>]])
#窗口函数的位置作为SELECT语句中的一列出现,类似基本聚合函数,如count()
#OVER()表示在当前查询的结果集上操作,包括分区与排序两种,均可选
#PARTITION BY类似于GROUP BY,表示对当前结果集按其中某列进行分组,如果未指定该子句,意味着整个
SELECT结果集作为一个分组
#只有在指定ORDER BY子句后才能进行窗口定义(windowclause)
#在一个SELECT语句中可以出现多次窗口函数
#对窗口函数的计算结果进行过滤,必须在窗口函数所在SELECT语句往外一层 

2、Hive窗口函数-排序类

(1)ROW NUMBER()

函数基于OVER对象分组、排序的结果为每一行分组记
录返回一个序号
序号从1开始,依次递增,遇到新组则重新从1开始记

(2)RANK()

功能与ROW NUMBER()类似,不同的是,RANK()产生
序号时,当排序的值相同时,返回的排名将重复 

(3)DENSE RANK()

功能与RANK()类似,不同的是,DENSE RANK()产生相
同序号时,下一个序号将连续
ROW NUMBERO、RANKO、DENSE RANKO)区别 

(4)NTILE(n)

将OVER对象的分组结果按顺序平均分成n片,并为每一
行记录返回一个切片号

(5)PERCENT RANK()

该函数返回OVER对象分组内当前行的RANK值与组内总
行数的比值

3、窗口函数-聚合类

常用聚合类函数包括
COUNT(Col),计数
SUM(col),求和
MAX(col),求最大值
MIN(col),求最小值
AVG(col),求平均值
聚合类窗口函数使用示例(count函数)

COUNT(COI) OVER([PARTITION BY <...>][ORDER BY<...>[<window clause>]]) 

4、窗口函数-分析类

常用分析类函数包括
CUME DISTO
返回小于等于当前值的行数与分组内总行数的比值
LAG/LEAD(col,n,DEFAULT)
统计窗口内往上/下第n行值
FIRST VALUE/LAST VALUE(COI)
返回OVER对象分组内第一个值/最后一个值 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值