hive开窗函数partition by

创建表单:
CREATE TABLE hive.tmp.tmp_lc_test_0722 ( name varchar, class integer, s integer )

插入数据:

insert into tmp.tmp_lc_test_0722 values('a3',1,95)

name class s
a9 3 55
a10 3 78
a1 2 74
a2 1 95
a4 1 80
a5 2 92
a6 3 99
a7 3 99
a8 3 45
a3 1 95

rank():

select * from (                                                                     
     select name,class,s,rank() over(partition by class order by s desc) num from tmp.tmp_lc_test_0722)                                                                         
    -- where num=1 

name class s num
a2 1 95 1
a3 1 95 1
a4 1 80 3
a6 3 99 1
a7 3 99 1
a10 3 78 3
a9 3 55 4
a8 3 45 5
a5 2 92 1
a1 2 74 2

row_number()

select * from                                                                      
(                                                                           
select name,class,s,row_number() over(partition by class order by s desc) num from tmp.tmp_lc_test_0722
)                                                                           
-- where num=1

name class s num
a5 2 92 1
a1 2 74 2
a2 1 95 1
a3 1 95 2
a4 1 80 3
a6 3 99 1
a7 3 99 2
a10 3 78 3
a9 3 55 4
a8 3 45 5

rank与row_number区别,rank对应s值相同,排名相同。row_number是根据行号排序分先后

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值