文档库 最新最全的文档下载
当前位置:文档库 › oracle练习2及答案

oracle练习2及答案

1、列出所有员工的姓名以及其直接上级的姓名
select e.ename,m.ename from emp e,emp m where e.mgr=m.empno(+);
2、列出受雇日期早于其直接上级的所有员工的编号,姓名,部门名称
select e.empno,e.ename,d.dname from emp e ,emp m ,dept d where e.hiredate 3、列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门
select d.dname,e.* from emp e,dept d where e.deptno(+) =d.deptno ;
4、列出所有员工的姓名、部门名称和工资
select ename,dname,sal from emp e,dept d where e.deptno=d.deptno;
5、查出某个员工的上级主管,并要求出这些主管中的薪水超过3000
select e.ename,m.ename from emp e,emp m where m.sal >3000 and e.mgr=m.empno;
6、列出至少有4个员工的部门名称
select d.deptno,dname,count(ename)
from emp e,dept d
where e.deptno=d.deptno
group by d.deptno,dname
having count(ename)>4;
7、列出薪金比"SMITH"多的所有员工
select * from emp where sal>(select sal from emp where lower(ename)='smith');
8、列出所有从事"CLERK"工作的雇员姓名及其部门名称、部门人数
select ename,dname,count(ename) from emp e ,dept d where lower(job)='clerk' and e.deptno=d.deptno group by ename,dname;
9、列出最低薪金大于1500的各种工作及从事此工作的全部雇员人数
select count(ename) from emp where job in (select job from emp where sal>any 1500 group by job) ;
10、列出在部门"sales"(销售部)工作的员工的姓名,假定不知道销售部的部门编号
select ename from emp where deptno= (select deptno from dept where lower(dname)='sales' );
11、列出薪金高于公司平均薪金的雇员姓名、所在部门名称、领导姓名、雇员的工资等级
select e.ename ,d.dname,m.ename,s.grade
from emp e,emp m,dept d ,salgrade s
where e.sal>(select round(avg(sal)) from emp ) and e.mgr=m.empno and e.deptno=d.deptno and e.sal between s.losal and s.hisal ;
12、列出与"SMITH"从事相同工作的所有员工及部门名称
select e.*,dname from emp e,dept d where job=(select job from emp where lower(ename)='smith') and e.deptno=d.deptno;
13、列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金
select ename,sal from emp where sal in (select sal from emp where deptno=30);
14、列出薪金高于部门30所有员工薪金的员工姓名、薪金及部门名称
select ename,sal,dname from emp,dept where sal > (select max(sal) from emp where deptno=30) and emp.deptno=dept.deptno;
15、列出在每个部门工作的员工数量、平均工资和平均服务年限
select count(ename),round(avg(sal)),round(avg((sysdate-hiredate)/365)) from emp where deptno in (select deptno from emp group by deptno) ;
16、列出所有员工的姓名、部门名称和工资
select ename,dname,sal from emp e,dept d where e.deptno=d.deptno;
17、列出所有部门的详细信息和部门人数

select dept.*, m.* from dept ,
(select d.deptno,count(ename) from emp e ,dept d where e.deptno=d.deptno group by d.deptno) m
where dept.deptno=m.deptno;
18、列出每种工作的最低工资以及从事此工作的最低工资的雇员姓名
select m.c,ename from emp e,
(select job a,min(sal) c from emp group by job) m
where m.a=e.job and m.c=e.sal;
19、列出各个部门的经理的最低薪金
select deptno, min(sal) from emp where lower(job)='manager' group by deptno;
20、列出所有员工的年工资,按年薪从低到高排序
select sal*12 from emp order by 1 ;
21、查询雇员的领导信息,要求领导的薪水要超过3000
select distinct m.* from emp e,emp m where m.sal >3000 and e.mgr=m.empno;
22、求出部门名称中,带'S'字符的部门员工的工资总和 、部门人数
select dname,sum(sal),count(ename) from emp e,dept d
where dname like '%S%' and e.deptno(+)=d.deptno
group by dname;

相关文档