group by 分组
通常会和聚合函数一起使用,按照某个字段
的内容
进行分组,然后每个分组执行聚合操作
原本数据
id name money 1 Bob 1200 2 Black 2100 3 BigDataBoy 5600 4 Bob 2300 5 Bob 3200 6 Black 5600
需求:按照 姓名(name) 进行分组,求平均工资(money)
查询语句:
select name,avg(money) from hive_db group by name;
查询结果
hive> select name,avg(money) from hive_db > group by name; Query ID = root_20200127203058_a0984c91-9ca1-4735-b6a9-ffd5aa2d17a7 ... Total MapReduce CPU Time Spent: 18 seconds 160 msec OK BigDataBoy 5600.0 Black 3850.0 Bob 2233.3333333333335 Time taken: 48.392 seconds, Fetched: 3 row(s)
having 语句
having 与 where 语句的异同
- where针对
表中的列
发挥作用,查询数据;having针对查询结果中的列
发挥作用,筛选数据。 - where后面
不能
写分组函数,而having后面可以
使用分组函数。 - having
只用于
group by分组统计语句。
需求:不同名字(name)的平均工资(money)大于 3000 的
查询语句:
select name,avg(money) avg_money from hive_db group by name having avg_money > 3000;
查询结果:
hive> select name,avg(money) avg_money from hive_db > group by name > having avg_money > 3000; Query ID = root_20200127204801_68c6a01d-21a3-4355-b3a8-69900f16b857 ... Total MapReduce CPU Time Spent: 16 seconds 10 msec OK BigDataBoy 5600.0 Black 3850.0 Time taken: 46.82 seconds, Fetched: 2 row(s)
版权声明:《 Hive group by 分组 和 having 语句 》为明妃原创文章,转载请注明出处!
最后编辑:2020-1-28 06:01:04