Hive笔记-6

6.2.8 聚合函数

1) 语法
  • count(*),表示统计所有行数,包含null值;

  • count(某列),表示该列一共有多少行,不包含null值;

  • max(),求最大值,不包含null,除非所有值都是null;

  • min(),求最小值,不包含null,除非所有值都是null;

  • sum(),求和,不包含null。

  • avg(),求平均值,不包含null。

2) 案例实操
(1) 求总行数 (count)
sql 复制代码
hive (default)> select count(*) cnt from emp;

hive sql执行过程:

count不仅可以传一个 * 还可以传一个(字段)

null 值是不统计在内

null 值是不会被统计在内的

(2) 求工资的最大值 (max)
sql 复制代码
hive (default)> select max(sal) max_sal from emp;

hive sql执行过程:

(3) 求工资的最小值 (min)
sql 复制代码
hive (default)> select min(sal) min_sal from emp;

hive sql执行过程:

(4) 求工资的总和 (sum)
sql 复制代码
hive (default)> select sum(sal) sum_sal from emp; 

hive sql执行过程:

(5) 求工资的平均值 (avg)
sql 复制代码
hive (default)> select avg(sal) avg_sal from emp;

hive sql执行过程:

6.3 分组

6.3.1 Group By 语句

Group By语句通常会和聚合函数一起使用,按照一个或者多个列队结果进行分组,然后对每个组执行聚合操作。

1) 案例实操:

把job分组后查看

sql 复制代码
select count(*) from emp group by job

结果:

看起来有点不太对劲,再改一下:

在count(*)前面加个job

现在看的清楚多了

注意:

注意: 当你 group by job 的时候,

那你只能select 后面跟 job 不能是其他的字段

(1) 计算emp表每个部门的平均工资
sql 复制代码
hive (default)> 
select 
    t.deptno, 
    avg(t.sal) avg_sal 
from emp t 
group by t.deptno;

hive sql执行过程:

(2)计算emp每个部门中每个岗位的最高薪水。

sql 复制代码
hive (default)>
select 
    t.deptno, 
    t.job, 
    max(t.sal) max_sal 
from emp t 
group by t.deptno, t.job;

hive sql执行过程:

6.3.2 Having 语句

1) having 与 where 不同点
(1) where 后面不能写分组聚合函数,而having后面可以使用分组聚合函数
(2) having 只用于 group by 分组统计语句
2) 案例实操

找这张表里人数大于等于2的:

输入代码:

得到输出结果:

但是当我不想要嵌套子查询时:

可见where字句行不通

因为where是用来过滤一行一行的数据

而已经group by 分组过了,where不能过滤组

于是我们只能用having来过滤一组一组的数据

那我们就用having:

(1) 求每个部门的平均薪水大于2000的部门
1.求每个部门的平均工资
sql 复制代码
hive (default)> 
select 
    deptno, 
    avg(sal) 
from emp 
group by deptno;

hive sql执行过程:

2.求每个部门的平均薪水大于2000的部门
sql 复制代码
hive (default)>
select 
    deptno, 
    avg(sal) avg_sal 
from emp 
group by deptno  
having avg_sal > 2000;

hive sql执行过程:

相关推荐
scdifsn2 小时前
动手学深度学习12.7. 参数服务器-笔记&练习(PyTorch)
pytorch·笔记·深度学习·分布式计算·数据并行·参数服务器
jackson凌5 小时前
【Java学习笔记】SringBuffer类(重点)
java·笔记·学习
Theodore_10225 小时前
大数据(2) 大数据处理架构Hadoop
大数据·服务器·hadoop·分布式·ubuntu·架构
huangyuchi.6 小时前
【Linux】LInux下第一个程序:进度条
linux·运维·服务器·笔记·进度条·c/c++
簌簌曌6 小时前
CentOS7 + JDK8 虚拟机安装与 Hadoop + Spark 集群搭建实践
大数据·hadoop·spark
大写-凌祁7 小时前
论文阅读:HySCDG生成式数据处理流程
论文阅读·人工智能·笔记·python·机器学习
Unpredictable2227 小时前
【VINS-Mono算法深度解析:边缘化策略、初始化与关键技术】
c++·笔记·算法·ubuntu·计算机视觉
傍晚冰川8 小时前
FreeRTOS任务调度过程vTaskStartScheduler()&任务设计和划分
开发语言·笔记·stm32·单片机·嵌入式硬件·学习
Theodore_10228 小时前
大数据(1) 大数据概述
大数据·hadoop·数据分析·spark·hbase
Love__Tay9 小时前
【学习笔记】Python金融基础
开发语言·笔记·python·学习·金融