MySQL练习题7-9
  FHVSBErvDkPx 2023年11月02日 41 0

7、求平均薪水的等级最低的部门的部门名称。

注意:平均薪水最低的等级肯定最低,平均薪水不是最低的也有可能等级最低。

第一步:分组查询每个部门编号、平均薪水

select deptno,avg(sal) as avgSal from emp group by deptNo

第二步:在第一步的基础上,联合薪资等级表salgrade,查询出每个部门平均薪水等级

select deptno,avgSal,grade from salgrade join (select deptno,avg(sal) as avgSal from emp group by deptNo) t on avgSal between loSal and hiSal

第三步:在第二步的基础上,查出最低薪资等级 3

select min(grade)as minGrade from salgrade join (select deptno,avg(sal) as avgSal from emp group by deptNo) t on avgSal between loSal and hiSal

第四步:在第三步基础上,查询哪些部门平均薪资的等级是最低等级

select t.deptno,avgSal,grade,dname from salgrade join (select deptno,avg(sal) as avgSal from emp group by deptNo) t on avgSal between loSal and hiSal join dept on dept.deptNo=t.deptno join (select min(grade)as minGrade from salgrade join (select deptno,avg(sal) as avgSal from emp group by deptNo) t on avgSal between loSal and hiSal) m on grade=m.minGrade

取得比普通员工(员工编号没有在mgr上出现的)的最高薪水还要高的经理人姓名

第1步:查询出现在mgr上的所有员工编号

select distinct mgr from emp where mgr is not null

第2步:在“第1步”查询的结果集的基础上,查询没有出现在mgr上的所有员工信息

select * from emp where empno not in(select distinct mgr from emp where mgr is not null)

第3步:在“第2步”查询的结果集的基础上,查询出普通员工的最高薪水

select sal from emp where empno not in(select distinct mgr from emp where mgr is not null) order by sal desc limit 1

或者

select max(sal) as maxSal from emp where empno not in(select distinct mgr from emp where mgr is not null)

第4步:在“第3步”的查询结果基础上,筛选出最终结果

select * from emp where sal>(select max(sal) as maxSal from emp where empno not in(select distinct mgr from emp where mgr is not null))

取得薪水最高的前五名员工

select * from emp order by sal desc limit 5

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

上一篇: MySQL练习题10-12 下一篇: MySQL练习题4-6
  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

FHVSBErvDkPx