Hive窗口函数是一种特殊类型的函数,它们在一组相关的行(称为窗口)上执行计算,并返回一个值。窗口函数可以在每行上应用一个聚合函数,但返回的结果是基于窗口中的行,而不是整个查询结果集。
1、窗口函数的种类:
Hive支持以下几种窗口函数:
- 聚合函数:如SUM、AVG、MIN、MAX、COUNT等。
- 排名函数:如ROW_NUMBER、RANK、DENSE_RANK、PERCENT_RANK、CUME_DIST等。
- 导航函数:如LEAD、LAG、FIRST_VALUE、LAST_VALUE、NTH_VALUE等。
2、窗口函数的语法:
function_name(expression) OVER ([PARTITION BY partition_expression] [ORDER BY order_expression] [ROWS BETWEEN start AND end])
- function_name:窗口函数的名称。
- expression:窗口函数的参数。
- PARTITION BY:用于将结果集分割成多个分区,每个分区都有自己的窗口。
- ORDER BY:用于在每个分区内对行进行排序。
- ROWS BETWEEN:用于定义窗口的范围
3、窗口函数示例:
3.1聚合函数示例
计算每个部门的总销售额:
SELECT
department,
SUM(sales) OVER (PARTITION BY department) AS total_sales
FROM
sales
3.2 排名函数示例
计算每个部门的销售额排名:
SELECT
department,
sales,
RANK() OVER (PARTITION BY department ORDER BY sales DESC) AS rank
FROM
sales
3.3 导航函数示例
获取每个部门的最高销售额:
SELECT
department,
FIRST_VALUE(sales) OVER (PARTITION BY department ORDER BY sales DESC) AS max_sales
FROM
sales