Hive 聚合操作

聚合函数
  1. 一句话概括什么是聚合函数:多行合并为一行。(大家应该明白了吧)
  2. 常用函数:sum,count,max,min,avg。
hive> select * from emp;
OK
7369    SMITH   CLERK   7902    1980/12/17      800.0   NULL    20
7499    ALLEN   SALESMAN        7698    1981/2/20       1600.0  300.0   30
7521    WARD    SALESMAN        7698    1981/2/22       1250.0  500.0   30
7566    JONES   MANAGER 7839    1981/4/2        2975.0  NULL    20
7654    MARTIN  SALESMAN        7698    1981/9/28       1250.0  1400.0  30
7698    BLAKE   MANAGER 7839    1981/5/1        2850.0  NULL    30
7782    CLARK   MANAGER 7839    1981/6/9        2450.0  NULL    10
7788    SCOTT   ANALYST 7566    1987/4/19       3000.0  NULL    20
7839    KING    PRESIDENT       NULL    1981/11/17      5000.0  NULL    10
7844    TURNER  SALESMAN        7698    1981/9/8        1500.0  0.0     30
7876    ADAMS   CLERK   7788    1987/5/23       1100.0  NULL    20
7900    JAMES   CLERK   7698    1981/12/3       950.0   NULL    30
7902    FORD    ANALYST 7566    1981/12/3       3000.0  NULL    20
7934    MILLER  CLERK   7782    1982/1/23       1300.0  NULL    10
Time taken: 5.998 seconds, Fetched: 14 row(s)
  • 接下来我们对emp表进行操作:
    1.查询员工的最大、最小、平均工资及所有工资的和
hive> select max(salary),min(salary),avg(salary),sum(salary) from emp;
结果:
5000.0  800.0   2073.214285714286       29025.0

2.查询记录数

hive> select count(*) from emp;
hive> select count(1) from emp;
结果:
14

2 分组函数(Group by) 

  • 使用Group by时,在Group by后面出现的字段也要出现在select后面。
  • 会执行mr*
    1.按照部门进行分组
hive> select deptno from emp group by deptno;
结果:
10
20
30

2.查询每个部门的平均工资

hive> select deptno,avg(salary) avg_sal from emp group by deptno; 
结果: 
10 2916.6666666666665 
20 2175.0 
30 1566.6666666666667
1
2
3
4
5


3.查询平均工资大于2000的部门(使用having子句限定分组查询)

hive>  select deptno,avg(salary) from emp group by deptno having avg(salary) > 2000;
结果:
10      2916.6666666666665
20      2175.0
1
2
3
4


4.按照部门和入职时间进行分组(先按照部门进行分组,然后针对每组按照入职时间进行分组)

hive> select deptno,hiredate from emp group by deptno,hiredate;
结果:
10      1981/11/17
10      1981/6/9
10      1982/1/23
20      1980/12/17
20      1981/12/3
20      1981/4/2
20      1987/4/19
20      1987/5/23
30      1981/12/3
30      1981/2/20
30      1981/2/22
30      1981/5/1
30      1981/9/28
30      1981/9/8

 

  • 10
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值