17/12/11高级子查询

17/12/11高级子查询

嵌套子查询:在通常的子查询中,子查询是以嵌套的方式写在父查询的WHERE、HAVING、FROM子句中。
执行过程:
1.子查询首先执行一次
2.用来自子查询的值劝人或取消父查询的候选行。
列:思考如何查询比本部门平均薪水高的员工姓名,薪水。

select ename , sal
from emp e,(select deptno, avg(sal) avgsal
from emp
group by deptno)d
where e.deptno = d.dptno 
and  e.sal>d.avgsal

相关子查询
```注意:注意内外层的问题``
1.(在WHERE子句上使用子查询)
思考如何查询比本部门平均薪水高的员工姓名、薪水。

select empno, enane,sal,deptno
from emp outertab
where sal > (select avg(sal)
             from emp
             where deptno = outertab deptno)

2.(在SELECT语句上使用子查询)
列:查询所有部门名称和人数

select dname,(select count(*)
              from emp
              where deptno = d.deptno)
from dept d              

EXISTS 和 NOT EXISTS操作符

列:查询那些人是经理

select ename,job,sal,deptno
from emp e
where EXISTS (selct '1'
              from emp
              where mgr = e.empno)
  • 课后作业练习4
select empno,ename,sal,DEPTNO
from EMP outerTab
where 1 >= (select count(*) from emp where EMP.sal < outerTab.sal and outerTab.DEPTNO = EMP.DEPTNO ) --- 公司里面比当前员工工资少的人的个数
order by deptno,sal

你可能感兴趣的:(17/12/11高级子查询)