第九章 高级子查询

第九章 高级子查询
如下练习,使用相关子查询完成
1.查询比所在职位平均工资高的员工姓名,职位。

select ename,job from emp where sal>(select avg(sal) from emp)

2.查询工资为其部门最低工资的员工编号,姓名,工资。

select deptno,empno,ename,sal 
from emp e
where sal=(select min(sal) from emp where deptno=e.deptno)

–练习2
如下练习,用相关子查询完成
1.查询所有雇员编号,名字和部门名字。

select empno 雇员编号,ename 名字,(select dname from dept where deptno=e.deptno) 部门名字
from emp e

2.查询哪些员工是经理?

select *
from emp e
where (select count(empno) from emp where mgr=e.empno)>0
---相关exists操作符,判断是否存在
select *
from emp e
where exists (select '1' from emp where mgr=e.empno)

3.查询哪些员工不是经理?

select *
from emp e
where (select count(empno) from emp where mgr=e.empno)=0
---相关not exists操作符,判断是否bu存在
select *
from emp e
where not exists (select '1' from emp where mgr=e.empno)

4.查询每个部门工资最低的两个员工编号,姓名,工资。

select deptno,empno,ename,sal
from emp e
where (select count(*) from emp where deptno=e.deptno and sal<e.sal )<2

–练习3
如下练习,用exists或not exists完成
1.列出至少有一个雇员的所有部门名称。

select dname
from dept
where exists (select '1' from emp where dept.deptno=emp.deptno)

2.列出一个雇员都没有的所有部门名称。

select dname
from dept
where not exists (select '1' from emp where dept.deptno=emp.deptno)

–课后作业
如下练习,使用相关子查询完成。
1.查询薪水多于他所在部门平均薪水的雇员名字,部门号。

select ename,deptno
from emp e
where sal>(select avg(sal) from emp where deptno=e.deptno)

2.查询员工姓名和直接上级的名字。

select e.ename 员工姓名,(select ename from emp where e.mgr=empno) 直接上级
from emp e

3.查询每个部门工资最高的员工姓名,工资。

select deptno,ename,(select max(sal) from emp where deptno=e.deptno)
from emp e

4.查询每个部门工资前两名高的员工姓名,工资。

select ename,sal
from emp e
where (select count(*) from emp where deptno=e.deptno)>2
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值