22.列出薪金高于公司平均薪金的所有员工,所在部门、上级领导、雇员的工资等级
相当的经典
第一步:求出薪金高于公司平均薪金的所有员工
第二步:把第一步的结果当成临时表t 将临时表t和部门表 dept d 和工资等级表salary s进行关联,求出员工所在的部门,雇员的工资等级等
关联的条件是t.deptno = d.deptno t.salary betweent s.lower and high;
第三步:求出第一步条件下的所有的上级领导,因为有的员工没有上级领导需要使用left join 左连接
1 第一步:求出公司的平均薪水 2 select avg(sal) as avgsal from emp; 3 +-------------+ 4 | avgsal | 5 +-------------+ 6 | 2073.214286 | 7 +-------------+ 8 9 select 10 d.dname, 11 e.ename, 12 b.ename as leadername, 13 s.grade 14 from 15 emp e 16 join 17 dept d 18 on 19 e.deptno = d.deptno 20 left join 21 emp b 22 on 23 e.mgr = b.empno 24 join 25 salgrade s 26 on 27 e.sal between s.losal and s.hisal 28 where 29 e.sal > (select avg(sal) as avgsal from emp); 30 +------------+-------+------------+-------+ 31 | dname | ename | leadername | grade | 32 +------------+-------+------------+-------+ 33 | RESEARCH | JONES | KING | 4 | 34 | SALES | BLAKE | KING | 4 | 35 | ACCOUNTING | CLARK | KING | 4 | 36 | RESEARCH | SCOTT | JONES | 4 | 37 | ACCOUNTING | KING | NULL | 5 | 38 | RESEARCH | FORD | JONES | 4 | 39 +------------+-------+------------+-------+