HiveQL-GROUP BY和HAVING子句

本文概述

  • 按条款分组
  • 有条款
Hive查询语言提供了GROUP BY和HAVING子句, 可促进与SQL中类似的函数。在这里, 我们将在下表的记录上执行这些子句:
HiveQL-GROUP BY和HAVING子句

文章图片
按条款分组 HQL Group By子句用于根据一个或多个列对来自多个记录的数据进行分组。它通常与聚合函数(例如SUM, COUNT, MIN, MAX和AVG)结合使用, 以对每个组执行聚合。
Hive中的GROUP BY子句示例
【HiveQL-GROUP BY和HAVING子句】让我们看一个示例, 根据部门对员工的薪水进行汇总。
  • 选择我们要在其中创建表的数据库。
hive> use hiveql;

HiveQL-GROUP BY和HAVING子句

文章图片
  • 现在, 使用以下命令创建表:
hive> create table emp (Id int, Name string , Salary float, Department string) row format delimited fields terminated by ', ' ;

HiveQL-GROUP BY和HAVING子句

文章图片
  • 将数据加载到表中。
hive> load data local inpath '/home/codegyani/hive/emp_data' into table emp;

HiveQL-GROUP BY和HAVING子句

文章图片
  • 现在, 使用以下命令明智地提取员工薪资部门的总和:
hive> select department, sum(salary) from emp group by department;

HiveQL-GROUP BY和HAVING子句

文章图片
HiveQL-GROUP BY和HAVING子句

文章图片
HiveQL-GROUP BY和HAVING子句

文章图片
在这里, 我们得到了期望的输出。
有条款 HQL HAVING子句与GROUP BY子句一起使用。其目的是对GROUP BY子句产生的数据组施加约束。因此, 它总是返回条件为TRUE的数据。
在Hive中包含子句的示例
在此示例中, 我们根据部门获取员工薪水的总和, 并使用HAVING子句对该总和应用所需的约束。
  • 通过使用以下命令, 根据总和> = 35000的部门获取员工的薪水总和:
hive> select department, sum(salary) from emp group by department having sum(salary)> =35000;

HiveQL-GROUP BY和HAVING子句

文章图片
HiveQL-GROUP BY和HAVING子句

文章图片
HiveQL-GROUP BY和HAVING子句

文章图片
在这里, 我们得到了期望的输出。

    推荐阅读