在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;
这会计算每个员工的工资相对于工资总和的百分比排名。