1989 1985——max是1989 min是1985 升序是 1985,1989

1.取得每个部门最高薪水的人员名称

  1. 先查询每个部门的最高薪水。

select deptno,max(sal) maxsal from emp group by deptno;
image.png

  1. 将第一步的查询结果当做一张临时表。

select e.ename,t.* from emp e
join
(select deptno,max(sal) maxsal from emp group by deptno) t
on
e.deptno=t.deptno
where
e.sal=t.maxsal;
image.png

2.查询薪水在部门的平均薪水之上的员工姓名(ename)和薪资(sal)

  1. 查询部门的平均薪水

select deptno,avg(sal) avgsal from emp group by deptno;
image.png

  1. 将第一步的查询结果作为临时表

select e.ename,e.sal from emp e
join
(select deptno,avg(sal) avgsal from emp group by deptno) t
on
e.deptno=t.deptno
where
e.sal>t.avgsal;
image.png

3.取得部门中所有人的薪水的平均薪水等级(salgrade)

啥比题?

4.不准用组函数(Max),取得最高薪水

  1. select sal from emp order by sal desc limit 0,1;

image.png

5.取得平均薪水最高的部门的部门编号

  1. 取得每个部门的平均薪水然后倒序排列取得第一个

select deptno,avg(sal) avgsal from emp group by deptno order by avgsal desc limit 0,1;
image.png

6.取得平均薪水最高的部门的部门名称

select d.dname,avg(e.sal) avgsal from dept d
join
emp e
on
d.deptno=e.deptno
group by d.dname
order by avgsal desc
limit 1;

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

select d.dname,avg(sal) avgsal from dept d
join
emp e
on
d.deptno=e.deptno
group by d.dname
order by avgsal
limit 1;
image.png