008、分组函数、聚合函数、多行处理函数
分组函数、聚合函数、多行处理函数
注意: 分组函数自动忽略空值,不需要手动的加 where 条件排除空值。
select count(*) from emp where xxx; 符合条件的所有记录总数。
select count(comm) from emp; comm 这个字段中不为空的元素总数。
注意:分组函数不能直接使用在 where 关键字后面。
# ---------------------------------8、分组函数/聚合函数/多行处理函数------------------- # 取得所有的员工数 select count(*) from emp; # 取得津贴不为 null 员工数 # 采用 count(字段名称),不会取得为 null 的记录 select count(comm) from emp; select count(*) from emp where comm is not null; # 取得工作岗位的个数 # distinct 去掉重复的项 select count(distinct job) from emp; # 取得薪水的合计 select sum(sal) from emp; # 取得津贴的合计 select sum(comm) from emp; # 取得薪水的合计(sal+comm) # comm 字段有 null 值,所以无法计算,sum 会忽略掉,正确的做法是将 comm 字段转换成 0 。如果为NULL 转换成0 。 select sum(sal+IFNULL(comm, 0)) from emp; # 取得某一列的平均值 # 取得平均薪水 select avg(sal) from emp; # 取得最高薪水 select max(sal) from emp; # 取得最低薪水 select min(sal) from emp; # 取得最晚入职得员工 select max(str_to_date(hiredate, '%Y-%m-%d')) from emp; select ename,hiredate from emp order by hiredate desc limit 1; # 取得最早入职得员工 select min(str_to_date(hiredate, '%Y-%m-%d')) from emp; select ename,hiredate from emp order by hiredate asc limit 1; # 取得入职时间前3的员工 select ename,hiredate from emp order by hiredate asc limit 3; # 可以将这些聚合函数都放到 select 中一起使用 select count(*),sum(sal),avg(sal),max(sal),min(sal) from emp;