数据库分组
distinct 去除重复记录
查询公司中有哪些工作岗位job
select distinct job from emp;
查询公司中工作岗位job的数量
select count(distinct job) from emp;
去除部门编号deptno和工作岗位job重复记录
说明:只有在出现多条deptno和job才会清楚的
select distinct deptne,job from emp;
group by分组
找出每个职位的最高薪水sal
写法一
select max(sal) from emp group by job;
写法二
注意:在有group by的DQL询句中,select语句后面只能跟 聚合函数 + 参与分组的字段
select job,max(sal) from emp group by job;
计算每个工作岗位的最高薪水,并且按照由高到低排序
select job,max(sal) as maxSal from emp group by job order by maxSal desc;
计算每个部门deptne的平均薪水
select deptne,avg(sal) from emp group by deptne;
计算不同部门deptne不同岗位job的最高薪水
扫描二维码关注公众号,回复:
6482137 查看本文章
select deptne,job,max(sal) from emp group by deptne,job;
计算除了manager之外的每个工作岗位的最高薪水
select job,max(sal) as maxSal from emp where job <> 'manager' group by job;
where和having区别
- where和having都是为了完成数据的过滤,它们后面都是添加条件;
- where是在 group by之前完成过滤;
- having是在group by之后完成过滤;
having过滤
作用:如果想对分组的数据进行过滤,需要使用having子句
找出每个工作岗位job的平均薪水sal,要求显示平均薪水大于2000的:
错误写法
原因:where后面不能直接使用聚合函数。
select job,avg(sal) as avgsal from emp where avg(sal)>2000 group by job;
正确写法
select job,avg(sal) from emp group by job having avg(sal) > 2000;