2020-11-29

hive中row_number函数的使用

1.hive中的row_number函数一般用来分组后排序。
假如本来的数据是这样的

id  dept  salary
1	a	8000
2	a	15000
3	a	10000
4	b	7000
5	b	9000

假如你想让a和别分别分组排序,也就是你想知道a和b两个部门每个月谁赚的最多那么你就可以使用row_number排名函数

select *, row_number() over(partition by dept order by salary)as pm from Company

结果就是:

id  dept salary pm
1	a	8000	1
3	a	10000	2
2	a	15000	3
4	b	7000	1
5	b	9000	2

我们可以看到row_number函数默认的是升序排序,也就是从小到大,如果你想让他从大到小可以加desc

select *, row_number() over(partition by dept order by salary desc)as pm from rn

结果如下:

id dept salary pm
2	a	15000	1
3	a	10000	2
1	a	8000	3
5	b	9000	1
4	b	7000	2

2.row_number函数在生产线上会被经常用来去重

select id,dept,salary from(
select *, row_number() over(partition by dept order by salary desc)as pm from rn
)t where t.pm=1

结果如下:

id dept salary
2	a	15000
5	b	9000

总结:
row_number()over()函数是比较重要的函数,mysql8.0之前不支持此函数,8.0以及8.0之后才能用此函数,在sql领域这个函数是很重要的。
本文采纳了:https://blog.csdn.net/ABCDEFG0929/article/details/89190450

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值