Hive中如何进行数据统计操作?代码举例讲解

在Hive中,我们可以使用以下方式进行数据统计操作:

1. COUNT():

  • COUNT()函数不仅可以用于计数行数,还可以用于统计指定条件的行数。
  • 这可以实现针对某个字段的值或范围的值进行统计。
    例如:
SELECT COUNT(*) FROM employees;      -- 总行数  
SELECT COUNT(*) FROM employees WHERE salary > 10000; -- 工资高于10000的员工数
SELECT COUNT(DISTINCT dept_id) FROM employees; -- 部门总数

2. SUM() OVER():

  • SUM() OVER()可以实现运行总和,polated sum等统计。
  • 这需要进行Window Partition进行分组,然后计算其内行的sum。
    例如:
SELECT dept_id, salary, 
SUM(salary) OVER(PARTITION BY dept_id) AS dept_total_salary 
FROM employees;


这会按部门分组,计算每个部门内的工资总和,从而得到每个部门的工资统计。

3. RANK() OVER():

  • RANK() OVER()可以用于排名,可以实现排序和统计TOP N。
  • 这也需要进行Window Partition进行分组,然后根据Order By进行排名。
    例如:
SELECT name, salary,
RANK() OVER(ORDER BY salary DESC) AS salary_rank 
FROM employees;

这会按工资降序对员工进行排名,统计每个员工的排名。

4. PERCENT_RANK() OVER():

  • PERCENT_RANK() OVER()可以用于百分比排名。
  • 这实现了相对排名的统计,范围在0到1之间。
    例如:
SELECT name, salary, 
PERCENT_RANK() OVER(ORDER BY salary DESC) AS salary_percent_rank 
FROM employees; 

这会计算每个员工的工资相对于工资总和的百分比排名。