hive窗口函数

[size=large][b]rank()、dense_rank():[/b][/size]
rank() over(partition by col0 order by col1)

dense_rank() over(partition by col0 order by col1)

根据col0分组,col1正序排序
例子:假设排序后的值为1,3,3,8,10
rank返回的值为1,2,2,4,5
dense_rank返回的值为1,2,2,3,4

[size=large][b]lag(),lead():[/b][/size]
lag(col1,2) over(partition by col0 order by col1) 分组排序后向上两行col1的值

lead(col1,1) over(partition by col0 order by col1)分组排序后向下两行col1的值


[size=large][b]ntile(num)[/b][/size]
我的理解是它会把分组后的数据每组都分成num份,然后给每份数据赋予1到num之间的数值(不知是否正确)
比如partition by col0后某组数据有20个,如果是ntile(5),那么第1到第4条数据值是1,5-8条数据值是2,依次类推


[size=large][b]聚合函数配合rows between [from] preceding and [to] following (如:sum)[/b][/size]
select col0,col1,sum(col2) over(partition by col0 order by col1 rows between 1 preceding and 1 following) total from table 此例中total值是根据col0分组对col1排序后上一行到下一行总共3行col2列值得总和

比如有如下table
col0 col1 col2
1 1 1
1 2 1
1 3 2
2 1 2
2 2 3
则结果为:
col0 col1 total
1 1 2
1 2 4
1 3 3
2 1 5
2 2 5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值