Hive函数之窗口函数、排名函数详讲

Hive函数之窗口函数、排名函数详讲

窗口函数 over()
什么是窗口函数?
对数据处理的条数进行设置(窗口大小),对每一条数据都进行开窗。
over函数的用法:
(1)over()函数前可以使用什么?
lag(列名, n, 默认值)
解释:拿前第n行数据,如果第n行数据不存在,赋默认值。
与之相似的:lead(列名, n, 默认值) 拿后第n行数据,如果第n行数据不存在,赋默认值。
ntile(n) 把数据均分成n组
排名函数
三个:rank()dense_rank()row_number()
rank():排名会重复、总数不变
dense_rank():排名会重复、总数会减少
row_number():排名不会重复、总数不变
④ 聚合函数
max()min()avg()count()sum()
(2)over()函数的括号里面可以写什么?
① partition by子句
用法:over(partition by 列名)
② order by子句
用法:over(order by 列名),可升序排(默认)、也可降序排(desc)
③ rows子句
rows子句的形式:rows between x and y,是x、y的取值可能有:
current row,当前行
n preceding,往前n行
n following,往后n行
unbounded preceding,从前面的起点
unbounded following,到后面的终点
综合起来一起用的语法形式,如下:
over(partition by a order by b rows between x and y)

注意:rows子句不能单独出现,有order by子句才能有rows子句。
注意:存在order by子句,但没有rows子句,此时窗口的大小为,当前组的第一行到当前行。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值