hive 的开窗函数row_number() over()

前提: 介绍工作中应用到常见的开窗函数

1. 分组TOPN :row_number() over()
测试数据

1,18,a,male
2,19,b,male
3,22,c,female
4,16,d,female
5,30,e,male
6,26,f,female

要求:需要查询出每种性别中年龄最大的2条数据

代码实现:因为用groupBy + 聚合函数 只能求出Top1, 不能求TopN
这里使用row_number() over()

select id,age,name,sex,
row_number() over(partition by sex order by age desc) as rank
from t_person
结果:
+--------------+---------------+----------------+---------------+-------+--+
| t_person.id  | t_person.age  | t_person.name  | t_person.sex  | rank  |
+--------------+---------------+----------------+---------------+-------+--+
| 6            | 26            | f              | female        | 1     |
| 3            | 22            | c              | female        | 2     |
| 4            | 16            | d              | female        | 3     |
| 5            | 30            | e              |

你可能感兴趣的:(hive,hive)