文档库 最新最全的文档下载
当前位置:文档库 › Oracle基础练习题及答案(多表查询1)

Oracle基础练习题及答案(多表查询1)

Oracle基础练习题及答案(多表查询1)
Oracle基础练习题及答案(多表查询1)

利用scott用户自带的四张表完成如下作业:

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

selectb.deptno,b.dnamefromemp a,dept

bwherea.deptno=b.deptnogroupbyb.deptno,b.dnamehavingcount(*)>=1;

2.列出薪金比SMITH高的所有员工

select*fromempwheresal>(selectsalfromempwhereename='SMITH');

3.列出所有员工的姓名及其直接上级领导的姓名

selecta.ename,b.ename "leader"fromemp a,emp bwherea.mgr=b.empno;

4.列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称

selecta.empno,a.ename,a.hiredate,c.dnamefromempa,empb,deptcwherea.mgr= b.empnoanda.deptno=c.deptnoanda.hiredate

5.列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门

selectb.dname,a.*fromemp a,dept bwherea.deptno(+)=b.deptno ;

6.列出所有CLERK(办事员)的姓名,及其部门名称,部门人数

selectaa.ename,aa.job,bb.dname,

(selectcount(a.deptno)fromemp a,dept b

wherea.deptno=b.deptnoandb.dname=bb.dname

groupbya.deptno )

fromemp aa,dept bb

whereaa.deptno(+)=bb.deptnoandaa.job='CLERK';

7.列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数

selecta.job,min(sal),count(ename)fromemp a,dept

bwherea.deptno=b.deptnohavingmin(sal)>1500groupbya.job;

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

selectenamefromemp a,dept bwherea.deptno=b.deptnoanddname='SALES';

9.列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的等级工资selecta.ename,dname,aa.ename "Leader" ,grade

fromemp a,dept b,emp aa,salgrade s

wherea.deptno=b.deptnoanda.mgr=aa.empnoand

a.sal>(selectavg(sal)fromemp)

anda.salbetweenlosalandhisal;

10.列出与SCOTT从事相同工作的所有员工的编号,姓名,职位及其部门名称selectempno,ename,job,dnamefromemp a,dept

bwherea.deptno=b.deptnoandjob=(selectjobfromempwhereename='SCOTT');

11.列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金。

selectename,salfromempwheresal=any(selectsalfromempwheredeptno=30);

12.列出薪金高于在部门30工作的所有员工的薪金的员工姓名、薪金和部门名称

selectename,sal,dnamefromempa,deptbwherea.deptno=b.deptnoandsal>all(selectsa lfromempwheredeptno=30);

13.列出在每个部门工作的员工数量、平均工资和平均服务期限

selectdname,count(ename),avg(sal),avg(sysdate- a.hiredate)fromemp

a,deptbwherea.deptno(+)=b.deptnogroupbya.deptno,dname;

14.列出所有员工的姓名、部门名称和工资

selectename,dname,salfromemp a,dept bwherea.deptno=b.deptno;

15.列出所有部门的详细信息和部门人数

selectb.deptno,dname,loc,count(ename)fromempa,deptbwherea.deptno(+)=b.d eptnogroupbyb.deptno,dname,loc;

16.列出各种工作的最低工资及从事此工作的雇员姓名

selectb.ename,c"MIN SAL",a.jobfrom(selectjob,min(sal)cfromempgroupbyjob) a,emp bwherea.job=b.jobandc=b.sal;

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

selectdeptno,min(sal)fromempwherejob='MANAGER'groupbydeptno;

18.列出员工的年工资,按年薪从低到高排序

19.查出某个员工的上级主管,并要求出这些主管中的薪水超过3000

selecta.ename,b.ename,b.sal "boss sal"fromemp a,emp

bwherea.mgr=b.empnoandb.sal>=3000;

相关文档