Hive高级操作-窗口函数
窗口函数
扫描多个输入行以计算各输出值,可为每行数据分别生成一行结果记录,几乎所有聚合计算都可以通过它来完成。
over()
#两种固定搭配,不能变更
function(arg1,...)OVER(partition by…order by…)
function(arg1,...)OVER(distribute by…sort by…)
1.排序类
1.1 ROW_NUMBER( )
基于over对象分组、排序地结果,为每行分组记录返回一个序号。该序号从1开始递增,遇到新组则重新从1开始编号,且编号总是连续的。
1.2 RANK()
类似ROW_NUMBER( ),但规则不同,RANK() 排序相同时会重复,总数不会变 1、1、 3、4
1.3 DENSE_RANK()
排序相同时会重复,总数会减少 1、1、 2、3
ROW_NUMBER() 会根据顺序计算1、2、3、4
函数名 | 解释 |
---|---|
ROW_NUMBER( ) | 会根据顺序计算1、2、3、4 |
ROW_NUMBER( ) | 排序相同时会重复,总数不会变 1、1、 3、4 |
DENSE_RANK() | 排序相同时会重复,总数会减少 1、1、 2、3 |
1.4 NTILE(n)
NTILE(n)将OVER对象的分组结果数据集按照顺序平均切分成n片,并为每一行返回一个切片号。
1.5 PERCENT_RANK()
PERCENT_RANK()函数用于将每行按照(rank - 1) / (rows - 1)进行计算。其中,rank为RANK()函数产生的序号,rows为当前窗口的记录总行数。
PERCENT_RANK()函数返回介于 0 和 1 之间的小数值
2.聚合类
count():计数,可以和distinct一起用,使用distinct时会很耗资源。
sum():求和;
AVG(): 求平均数;
Max()/Min() : 求最大值/最小值;
本文作者:Lilaaa
本文链接:https://www.cnblogs.com/lila720/p/18273871
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步