7、分组函数/聚合函数/多行处理函数

count

取得记录数

sum

求和

avg

取平均

max

取最大的数

min

取最小的数

 

注意:分组函数自动忽略空值,不需要手动的加where条件排除空值。

select count(*) from emp where xxx; 符合条件的所有记录总数。

select count(comm) from emp;     comm这个字段中不为空的元素总数。

 

注意:分组函数不能直接使用在where关键字后面。

mysql> select ename,sal from emp where sal > avg(sal);

ERROR 1111 (HY000): Invalid use of group function

7.1、count

  1. 取得所有的员工数

select count(*) from emp;

七、分组函数/聚合函数/多行处理函数

Count(*)表示取得所有记录,忽略null,为null的值也会取得

     2.取得津贴不为null员工数

select count(comm) from emp;

七、分组函数/聚合函数/多行处理函数

 

采用count(字段名称),不会取得为null的记录

    3.取得工作岗位的个数

select count(distinct job ) from emp;     #distinct 不同种类的

七、分组函数/聚合函数/多行处理函数

 

 

7.2、sum

  1. Sum可以取得某一个列的和,null会被忽略
  2. 取得薪水的合计

select sum(sal) from emp;

七、分组函数/聚合函数/多行处理函数

 

  1. 取得津贴的合计

select sum(comm) from emp;

七、分组函数/聚合函数/多行处理函数

 

null会被忽略

     2.取得薪水的合计(sal+comm)

select sum(sal+comm) from emp;

七、分组函数/聚合函数/多行处理函数

七、分组函数/聚合函数/多行处理函数

 

从以上结果来看,不正确,原因在于comm字段有null值,所以无法计算,sum会忽略掉不计算有null的行,正确的做法是将comm字段转换成0

select sum(sal+IFNULL(comm, 0)) from emp;

七、分组函数/聚合函数/多行处理函数

 

7.3、avg

取得某一列的平均值

  1. 取得平均薪水

select avg(sal) from emp;

七、分组函数/聚合函数/多行处理函数

 

 

7.4、max

取得某个一列的最大值

  1. 取得最高薪水

select max(sal) from emp;

七、分组函数/聚合函数/多行处理函数

 

     2.取得最晚入职得员工

select max(str_to_date (hiredate, '%Y-%m-%d')) from emp;

七、分组函数/聚合函数/多行处理函数

 

7.5、min

取得某个一列的最小值

  1. 取得最低薪水

select min(sal) from emp;

七、分组函数/聚合函数/多行处理函数

 

  1. 取得最早入职得员工(可以不使用str_to_date转换

select min(str_to_date(hiredate, '%Y-%m-%d')) from emp;

七、分组函数/聚合函数/多行处理函数

 

 

7.6、组合聚合函数

可以将这些聚合函数都放到select中一起使用

select count(*),sum(sal),avg(sal),max(sal),min(sal) from emp;

七、分组函数/聚合函数/多行处理函数

 

相关文章:

  • 2021-09-07
  • 2021-12-12
  • 2021-08-31
  • 2022-12-23
  • 2022-12-23
  • 2021-07-06
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-12-26
  • 2021-12-15
  • 2022-12-23
  • 2021-08-07
  • 2021-12-05
相关资源
相似解决方案