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