HiveQL GROUP BY和HAVING子句
Hive查询语言提供了GROUP BY和HAVING子句,这些子句类似于SQL中的功能。在下面的表格记录上,我们将执行这些子句:
GROUP BY子句
HQL的Group By 子句用于根据一个或多个列将多个记录的数据分组。它通常与聚合函数(如SUM、COUNT、MIN、MAX和AVG)结合使用,对每个组执行聚合操作。
在Hive中使用GROUP BY子句的示例
让我们通过一个示例来按部门对员工的工资进行求和。
- 选择要创建表的数据库。
hive> use hiveql;
- 现在,使用以下命令创建一个表:
hive> create table emp (Id int, Name string , Salary float, Department string)
row format delimited
fields terminated by ',' ;
- 将数据加载到表中。
hive> load data local inpath '/home/codegyani/hive/emp_data' into table emp;
- 现在,使用以下命令按部门获取员工薪水总和:
hive> select department, sum(salary) from emp group by department;
在这里,我们获得了期望的输出。
有HAVING子句
HQL HAVING子句 与 GROUP BY 子句一起使用。它的目的是对由GROUP BY子句产生的数据组应用约束条件。因此,它总是返回满足条件的数据 TRUE 。
在Hive中使用Having子句的示例
在这个示例中,我们根据部门获取员工工资的总和,并使用HAVING子句对该总和应用所需的约束。
- 使用以下命令获取基于部门的员工工资总和,总和大于等于35000:
hive> select department, sum(salary) from emp group by department having sum(salary)>=35000;
这里,我们得到了期望的输出。