目录
第七章:聚合函数/分组函数☆☆☆
聚合函数一共有五个:多行处理函数
多行函数的特点:对多行进行处理,返回一行结果
1.count 计数
语法结构:
应用:
--查询emp表中一共有多少人
select count(*) from emp;
___________________________________________________________________________________
2.sum求和
语法结构:
应用:
-- 查询emp表中员工的工资总和
select sum(sal) from emp;
___________________________________________________________________________________
3.avg 平均值
语法结构:
应用:
-- 求整个公司的员工平均薪资
select avg(sal) from emp;
___________________________________________________________________________________
4.max 最大值
语法结构:
应用:
--查询整个公司的最高工资
select max(sal) from emp;
___________________________________________________________________________________
5.min最小值
语法结构:
应用:
-- 查询这个公司的最低工资
select min(sal) from emp;
-- 查询这个公司最早入职的员工姓名和入职日期
select ename,min(hiredate)from emp;
___________________________________________________________________________________
知识点:聚合函数自动 忽略null;
语法结构:
应用:
-- 查询emp表中一共有多少人
select count(*) from emp;
& count中不能写空值的字段
select count(comm) from emp;
-- 统计emp中有津贴的员工数量
select count(comm) from emp where comm !=0; & 入职日期可以比较大小,也可以计算
--查询这个公司最晚入职的员工的入职日期.
select max(hiredate)from emp;
___________________________________________________________________________________
知识点:聚合函数-count(*)和count(字段)的区别☆☆☆
count(*)统计表里有多少天数据
count(字段):统计的是该字段有多少个非空值
语法结构:
应用:
__________________________________________________________________________________
ifnuff 的使用 (聚合函数-xxx+null=null)
语法结构:
应用:
-- 统计emp表中每个员工的姓名和他的总工资
select ename,sal+comm from emp; 这个结果不符合要求
解决办法:使用 ifnull函数
空处理函数:ifnull(可能有null的字段,被当做什么数处理)
select ename,sal+ifnull(comm,0) from emp; &null 相关词组
-- 年底涨薪了,所有员工的津贴都涨200;请查询涨薪后的津贴情况;
select ifnull(comm,0)+200 from emp;
select ename,comm ifnull(comm,0) from emp;
select ename,comm from
--查询表emp中所有员工的年薪(包含津贴),并把查询的字段改为年薪;
select (sal+ifnull(comm,0))*12 年薪 from emp;
--给没有津贴的员工涨薪200 (津贴为0的还是为0)
select ifnull(comm,200) from emp;
___________________________________________________________________________________
知识点:聚合函数不能直接在where子句中使用☆☆☆
-- 查询表emp中员工工资大于平均工资的员工姓名和薪水;
select ename,sal from emp where sal>avg(sal); ×××
用group by +having
语法结构:
应用:
___________________________________________________________________________________
知识点:聚合函数--组合使用/汇总写法
语法结构:
应用:
--查询emp表中员工的最高,最低和薪水的平均值;
select max(sal),min(sal),avg(sal);×
select max(sal),min(sal),avg(sal) from emp;√
___________________________________________________________________________________
知识点:数据去重distinct
语法结构:
应用:
--1.表emp中工种有哪些?
select job frop emp; ××
select distinct job from emp;
--2.表emp中员工部门有哪些?
select distinct deptno from emp;
__________________________________________________________________________________
第八章:group by 分组
语法结构:select 字段 from 表名 where 条件 group by 分组 order by 排序;
什么时候用分组? 需求含义有“每“”每个“”各个“
分组之后,select 后面只能有被分组的字段(聚合函数除外)
换句话说,select 后面不能查询未被分组的字段
&易错(查找易错符号编辑判断题)
group by --单字段分组
应用:
-- 找出公司的最高薪资
select max(sal) from emp;
-- 公司有哪些岗位
select distinct job from emp;
-- 找出每个岗位的最高薪资
select max(sal) from emp group by job;
-- 求出每个部门的平均薪资
select avg(sal) from emp group by deptno;
select avg(sal),deptno from emp group by deptno;
___________________________________________________________________________________
group by--多字段分组
语法结构:
& 如果被分组的字段顺序发生改变,对结果有影响吗?
解:无影响
select deptno,job,avg(sal) from emp group by job,deptno;下表,与原表一致;
select job,deptno,avg(sal) from emp group by deptno,job;
应用:
-- 求出每个部门的平均薪资
select avg(sal) from emp group by deptno;
-- 求出每个部门每个岗位的平均薪资;
select deptno,job,avg(sal) from emp group by deptno,job; & group by 后面的分组字段顺序可以不一致
--查询每个部门每个岗位的平均入职时间;
select deptno,job avg(hiredate) from emp group by deptno,job; ×少了个,
select deptno,job,avg(hiredate) from emp group by de