hive开窗函数
时间: 2023-07-22 12:15:40 浏览: 118
Hive中的开窗函数(Window Functions)是一种在查询结果集中进行计算并返回结果的函数。它可以用来计算一些聚合函数的子集,如累计和、排名、分组百分比等等。
Hive支持以下几种开窗函数:
1. ROW_NUMBER():用于返回每个分区中行的序号,从1开始计数;
2. RANK():用于返回每个分区中行的排名,相同的值排名相同,排名相同时下一个排名会跳过;
3. DENSE_RANK():用于返回每个分区中行的密集排名,相同的值排名相同,排名相同时下一个排名不会跳过;
4. PERCENT_RANK():用于返回每个分区中行的百分比排名,即排名/(分区行数-1);
5. CUME_DIST():用于返回每个分区中行的累计分布函数值,即小于等于当前值的行数占总行数的比例;
6. LAG():用于返回当前行指定偏移量之前的行的值;
7. LEAD():用于返回当前行指定偏移量之后的行的值;
8. FIRST_VALUE():用于返回每个分区中第一行的值;
9. LAST_VALUE():用于返回每个分区中最后一行的值;
10. AVG()、SUM()、MIN()、MAX()、COUNT()等聚合函数。
开窗函数需要使用 OVER() 关键字和 PARTITION BY 子句进行分区,并可以使用 ORDER BY 子句进行排序。例如,以下是一个使用 ROW_NUMBER() 开窗函数的 Hive 查询示例:
```
SELECT id, name, ROW_NUMBER() OVER(PARTITION BY name ORDER BY id) AS row_num
FROM student;
```
该查询将返回一个结果集,其中包含每个学生的id、name和按照name进行分区后的行号。
阅读全文