Hive窗口函数详解:使用方法、常用函数及示例
Hive窗口函数是一种在Hive查询中使用的函数,用于在查询结果的窗口(或分组)中执行计算操作。窗口函数可以对数据进行分组、排序和聚合,以及计算每个窗口中的行的排名、行号等。
常用的Hive窗口函数包括:
- 'ROW_NUMBER()': 为每个窗口中的行分配一个唯一的序号。
- 'RANK()': 计算每个窗口中的行的排名。
- 'DENSE_RANK()': 计算每个窗口中的行的密集排名,相同的值将获得相同的排名,但排名之间不会有间隔。
- 'LAG()': 获取窗口中前一行的值。
- 'LEAD()': 获取窗口中下一行的值。
- 'FIRST_VALUE()': 获取窗口中第一行的值。
- 'LAST_VALUE()': 获取窗口中最后一行的值。
- 'SUM()': 计算窗口中数值列的总和。
- 'AVG()': 计算窗口中数值列的平均值。
- 'MAX()': 计算窗口中数值列的最大值。
- 'MIN()': 计算窗口中数值列的最小值。
使用窗口函数的基本语法如下:
窗口函数() OVER (PARTITION BY 列1, 列2... ORDER BY 排序列 [ASC|DESC] [ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW])
其中,'PARTITION BY'子句用于指定分组列,'ORDER BY'子句用于指定排序列,'ROWS BETWEEN'子句用于指定计算窗口的范围。
例如,以下示例计算了每个部门中员工的平均工资和排名:
SELECT department, name, salary, AVG(salary) OVER (PARTITION BY department) AS avg_salary, RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS rank
FROM employees;
以上查询将返回每个员工的部门、姓名、工资、部门平均工资和在部门中的排名。
原文地址: https://www.cveoy.top/t/topic/quZD 著作权归作者所有。请勿转载和采集!