21.列出在部门"SALES"< 销售部> 工作的员工的姓名, 假定不知道SALES的部门编号.
不知道就先根据sales求出来
select ename,DEPTNO
from emp
where DEPTNO=(select DEPTNO from dept where dname='sales')
22、列出薪金高于公司平均薪金所有员工,所在部门,上级领导,公司的工资等级
关联多张表实现 ,注意left join 否则king会因为null不在empno而不展示
SELECT e.ENAME,d.DNAME,ee.ENAME,s.GRADE
from emp e left JOIN emp ee
on e.mgr=ee.EMPNO
join salgrade s
on e.sal BETWEEN s.LOSAL and s.HISAL
join dept d
on e.deptno=d.deptno
WHERE e.sal>(select avg(sal) from emp)
23、 列出与"SCOTT" 从事相同工作的所有员工及部门名称
自连接找到相同工作的,判断完把scott丢了
select ee.ename,e.job,d.DNAME
from emp e
join emp ee
on e.job=ee.job
join dept d
on ee.DEPTNO=d.DEPTNO
where e.ename='scott'
HAVING ee.ENAME!='scott'
24、列出薪金 【等于部门 30 中员工的薪金】 的其他员工的姓名和薪金.(和30部门薪资相同的)
select sal,ename
from emp
where
sal in(select DISTINCT e.SAL from emp e WHERE e.DEPTNO=30)
and DEPTNO !=30
25、列出薪金高于在部门 30 工作所有员工的薪金的员工姓名和薪金. 部门名称(高于30部门的)
高于就是算比最高还高就行 用max
select
e.sal,e.ename,d.DNAME
from
emp e join dept d
on
e.DEPTNO=d.DEPTNO
where
e.sal >(select max(e.SAL) from emp e WHERE e.DEPTNO=30) and e.DEPTNO !=30