书犹药也,善读之可以医愚。|

Lilaaa

园龄:1年粉丝:0关注:0

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 中国大陆许可协议进行许可。

posted @   Lilaaa  阅读(11)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起