实训三 连接查询和嵌套查询

1. 列出至少有一个雇员的所有部门。 

1
select  from  dept  where  deptno  in ( select  deptno  from  emp  group  by  deptno  having  count (*)>0)

2. 列出薪金比“SMITH”多的所有雇员。

1
select  from  emp  where  sal>( select  sal  from  emp  where  ename= 'SMITH' )

3. 列出所有雇员的姓名及其上级的姓名。 

1
select  a.ename,b.ename  from  emp a,emp b  where  a.mgr=b.empno

4. 列出入职日期早于其直接上级的所有雇员。 

1
select  ename  from  emp a  where  hiredate<( select  hiredate  from  emp  where  empno=a.mgr)

5. 列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门。 

1
select  dname,ename  from  dept a,emp b  where  a.deptno=b.deptno(+)

6. 列出所有“CLERK”(办事员)的姓名及其部门名称。 

1
select  dname,ename  from  dept a,emp b  where  a.deptno=b.deptno  and  job= 'CLERK'

7. 列出各种类别的最低薪金,以使最低薪金等于 1500。 

1
2
3
update  emp  set  sal=1500
 
where  empno  in ( select  empno  from  emp  where  (job,sal)  in ( select  job, min (sal)  from  emp  group  by  job  having  min (sal)<1500))

8. 列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。 

1
select  ename  from  emp  where  deptno=( select  deptno  from  dept  where  dname= 'SALES' )

9. 列出薪金高于公司平均水平的所有雇员。 

1
select  ename  from  emp  where  sal>( select  avg (sal)  from  emp)

10. 列出与“SMITH”从事相同工作的所有雇员。 

1
select  from  emp  where  job=( select  job  from  emp  where  ename= 'SMITH' )

11. 列出薪金等于给予在部门 30 工作的雇员的薪金的所有雇员。 

1
select  from  emp  where  sal  in ( select  sal  from  emp  where  deptno=30)

12. 列出薪金高于在部门 30 工作的所有雇员的薪金的所有雇员。

1
select  from  emp  where  sal> all ( select  sal  from  emp  where  deptno=30)

13. 列出在每个部门工作的雇员的数量以及其他信息。 

1
select  dept.*,t. count  from  dept, ( select  deptno, count (*)  count  from  emp  group  by  deptno) t  where  dept.deptno=t.deptno

14. 列出所有雇员的雇员名称、部门名称和薪金。 

1
select  ename,dname,sal  from  emp,dept  where  emp.deptno=dept.deptno

15. 列出从事同一种工作但属于不同部门的雇员的不同组合。 

1
select  a.ename,b.ename,a.job,a.deptno,b.deptno   from  emp a,emp b  where  a.job=b.job  and  a.deptno!=b.deptno

16. 列出分配有雇员数量的所有部门的详细信息,即使是分配有 0 个雇员。 

1
2
3
select  dept.deptno,dname,loc, count (empno)  from  dept,emp
 
where  dept.deptno=emp.deptno(+)  group  by  dept.deptno,dname,loc  order  by  dept.deptno

17. 列出各种类别工作的最低工资。 

1
select  job, min (sal+nvl(comm,0))  from  emp  group  by  job;

18. 列出各个部门的 MANAGER(经理)的最低薪金。 

1
select  deptno, min (sal)  from  emp  where  job= 'MANAGER'  group  by  deptno

19. 列出按计算的字段升序排序的所有雇员的年薪。 

1
select  ename,sal*12 年薪  from  emp  order  by  年薪  ASC

20. 列出薪金水平处于第四位的雇员。 

1
lect *  from  ( select  rownum num,empno,ename  from  emp  order  by  sal)  where  num=4

 

 


1. 列出至少有一个雇员的所有部门。 

1
select  from  dept  where  deptno  in ( select  deptno  from  emp  group  by  deptno  having  count (*)>0)

2. 列出薪金比“SMITH”多的所有雇员。

1
select  from  emp  where  sal>( select  sal  from  emp  where  ename= 'SMITH' )

3. 列出所有雇员的姓名及其上级的姓名。 

1
select  a.ename,b.ename  from  emp a,emp b  where  a.mgr=b.empno

4. 列出入职日期早于其直接上级的所有雇员。 

1
select  ename  from  emp a  where  hiredate<( select  hiredate  from  emp  where  empno=a.mgr)

5. 列出部门名称和这些部门的雇员,同时列出那些没有雇员的部门。 

1
select  dname,ename  from  dept a,emp b  where  a.deptno=b.deptno(+)

6. 列出所有“CLERK”(办事员)的姓名及其部门名称。 

1
select  dname,ename  from  dept a,emp b  where  a.deptno=b.deptno  and  job= 'CLERK'

7. 列出各种类别的最低薪金,以使最低薪金等于 1500。 

1
2
3
update  emp  set  sal=1500
 
where  empno  in ( select  empno  from  emp  where  (job,sal)  in ( select  job, min (sal)  from  emp  group  by  job  having  min (sal)<1500))

8. 列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号。 

1
select  ename  from  emp  where  deptno=( select  deptno  from  dept  where  dname= 'SALES' )

9. 列出薪金高于公司平均水平的所有雇员。 

1
select  ename  from  emp  where  sal>( select  avg (sal)  from  emp)

10. 列出与“SMITH”从事相同工作的所有雇员。 

1
select  from  emp  where  job=( select  job  from  emp  where  ename= 'SMITH' )

11. 列出薪金等于给予在部门 30 工作的雇员的薪金的所有雇员。 

1
select  from  emp  where  sal  in ( select  sal  from  emp  where  deptno=30)

12. 列出薪金高于在部门 30 工作的所有雇员的薪金的所有雇员。

1
select  from  emp  where  sal> all ( select  sal  from  emp  where  deptno=30)

13. 列出在每个部门工作的雇员的数量以及其他信息。 

1
select  dept.*,t. count  from  dept, ( select  deptno, count (*)  count  from  emp  group  by  deptno) t  where  dept.deptno=t.deptno

14. 列出所有雇员的雇员名称、部门名称和薪金。 

1
select  ename,dname,sal  from  emp,dept  where  emp.deptno=dept.deptno

15. 列出从事同一种工作但属于不同部门的雇员的不同组合。 

1
select  a.ename,b.ename,a.job,a.deptno,b.deptno   from  emp a,emp b  where  a.job=b.job  and  a.deptno!=b.deptno

16. 列出分配有雇员数量的所有部门的详细信息,即使是分配有 0 个雇员。 

1
2
3
select  dept.deptno,dname,loc, count (empno)  from  dept,emp
 
where  dept.deptno=emp.deptno(+)  group  by  dept.deptno,dname,loc  order  by  dept.deptno

17. 列出各种类别工作的最低工资。 

1
select  job, min (sal+nvl(comm,0))  from  emp  group  by  job;

18. 列出各个部门的 MANAGER(经理)的最低薪金。 

1
select  deptno, min (sal)  from  emp  where  job= 'MANAGER'  group  by  deptno

19. 列出按计算的字段升序排序的所有雇员的年薪。 

1
select  ename,sal*12 年薪  from  emp  order  by  年薪  ASC

20. 列出薪金水平处于第四位的雇员。 

1
lect *  from  ( select  rownum num,empno,ename  from  emp  order  by  sal)  where  num=4

 

 

     本文转自stock0991 51CTO博客,原文链接:http://blog.51cto.com/qing0991/1597907,如需转载请自行联系原作者




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值