取得每个部门最高薪水的人员名称
第1步:取得每个部门的最高薪水,按照部门分组求最大值
select deptno,max(sal)as maxsal from emp group by deptno;
第2步:将上面的查询结果当做临时表t与表emp进行表连接,连接条件为:t.deptno=emp.deptno and t.maxsal=emp.sal
select emp.eName,t.* from emp join (select deptno,max(sal) as maxsal from emp group by deptno) t on t.deptno=emp.deptno and t.maxsal=emp.sal
哪些人的薪水在部门平均薪水之上
第1步:求部门平均薪水,按照部门分组求平均值
select deptno,avg(sal) as avgsal from emp group by deptno;
第2步:将上面的查询结果当做临时表t与表emp进行表连接,连接条件为:t.deptno=emp.deptno and t.avgsal<emp.sal
select emp.eName,t.* from emp join (select deptno,avg(sal) as avgsal from emp group by deptno) t on t.deptno=emp.deptno and t.avgsal<emp.sal;
取得部门中(所有人的)平均薪水等级
第1步:求部门中(所有人)平均薪水,按照部门分组求平均值。
select deptno,avg(sal) as avgsal from emp group by deptno;
第2步:将以上查询结果当做临时表t与salgrade进行表连接,连接条件:
t.avgsal between salgrade.losal and salgrade.hisal
select t.*,salgrade.grade from salgrade join (select deptno,avg(sal) as avgsal from emp group by deptno) t on t.avgsal between salgrade.losal and salgrade.hisal;