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对象分组内第一个值/最后一个值
5957

被折叠的 条评论
为什么被折叠?



