在Apache Hive中,聚合、排序和分组是数据分析中的基本操作,以下是它们的使用方式:
聚合(Aggregation)
聚合函数用于计算一组值的汇总统计量。常见的Hive聚合函数包括:
COUNT(*)
:计算行数SUM(column_name)
:对某一列求和AVG(column_name)
:计算平均值MAX(column_name)
:找出一列的最大值MIN(column_name)
:找出一列的最小值GROUPING SETS, ROLLUP, CUBE
:多维度聚合
例如:
SELECT department, COUNT(*), AVG(salary)
FROM employees
GROUP BY department;
分组(Grouping)
GROUP BY子句与聚合函数配合使用,将数据集按照指定列进行分组,然后对每个组执行聚合操作。
-- 按部门分组并计算每个部门的平均工资
SELECT department, AVG(salary) as avg_salary
FROM employees
GROUP BY department;
排序(Ordering)
ORDER BY子句用于对查询结果进行排序。
-- 按照工资降序排列所有员工
SELECT * FROM employees
ORDER BY salary DESC;
-- 在分组的基础上进行排序
SELECT department, COUNT(*) as emp_count
FROM employees
GROUP BY department
ORDER BY emp_count DESC;
此外,Hive还提供了窗口函数来进行复杂的排序和分析任务,比如基于相邻行或某个窗口内的数据进行排序和聚合。
窗口函数(Window Functions)
窗口函数可以在一组相关行(即窗口)上执行计算,而不必将数据分为多个独立的组。
-- 计算每位员工相对于所在部门内其他员工的工资排名
SELECT id, name, salary,
RANK() OVER (PARTITION BY department ORDER BY salary DESC) as rank
FROM employees;