数据库分组

数据库分组

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;

猜你喜欢

转载自blog.csdn.net/qq_37805723/article/details/91977477