0
点赞
收藏
分享

微信扫一扫

分组查询知识

caoxingyu 2022-03-11 阅读 77

分组查询

在实际的运用中,需要先进行分组,然后对每一组的数据进行操作,这时候需要分组查询

select ... from ... group by ...;

eg:比如计算每个部门的工资和

找出每个工作岗位的工资和?

​ 实现思路:按照工作岗位进行分组,然后对工资求和

select job,sum(sal) from emp group by job;

​ 执行顺序:先从emp中查询数据;然后对job进行分组;然后对每一组数据进行求和
重点结论:在一条sql语句中,如果含有group by语句,select只能跟:参加分组的字段,以及分 组函数;其他的一律不能跟

找出每个部门的最高薪资

select deptno,max(sal) from emp group by deptno;

找出每个部门,不同工作岗位的最高薪资

select max(sal) from emp group by deptno,job;
/**按照两个字段进行分组**/

找出每个部门最高薪资,要求显示最高薪资大于3000的

select max(sal) from emp where sal>3000 group by deptno;
or
select max(sal) from emp group by deptno having max(sal)>3000;//效率低
/**可以用having来再次过滤,having必须和group by一起使用
如果where和having都可以实现,则优先使用where**/

找出每个部门平均薪资,要求显示平均薪资高于2500的

select avg(sal) from emp group by deptno having avg(sal)>2500;
/**这个只能用having实现,where不能实现,因为分组函数avg不能写在where里**/

找出每个岗位的平均薪资,要求显示平均薪资大于1500,除了MANAGER之外,要求按照平均薪资降序排列

select avg(sal) from emp where job!='MANAGER' group by job having avg(sal)>1500 order by avg(sal) desc;
举报

相关推荐

0 条评论