黑龙江科技学院09级oracle考试试题答案

  • 格式:doc
  • 大小:53.00 KB
  • 文档页数:4

1、选择部门30中的所有员工。

select * from emp where deptno='30';

2、列出所有办事员(CLERK)的姓名,编号和部门编号。

select ename,empno,deptno from emp where job='CLERK';

3、找出佣金高于薪金的员工

select * from emp where comm>sal;

4、找出佣金高于薪金的60%的员工

select * from emp where comm>sal*0.6;

5、找出部门10中所有经理(MANAGER)和部门20中所有办事员(CLERK)的详细资料。

select * from emp where deptno in (10,20);

select * from emp where (deptno='10' and job='MANAGER') or (deptno='20' and

job='CLERK');

6、找出部门10中所有经理(MANAGER),部门20中所有办事员(CLERK),既不是经理又不是办事员但其薪金大于或等于2000的所有员工的详细资料。

select * from emp where (deptno='10' and job='MANAGER') or (deptno='20' and

job='CLERK') or (job not

in ('MANAGER','CLERK') and sal>=2000) ;

7、找出收取佣金的员工的不同工作

select distinct job from emp where not comm is null;

8、找出不收取佣金或收取的佣金低于100的员工

select ename from emp where comm<100 or comm is null;

9、找出各月倒数第3天受雇的所有员工

select * from emp where hiredate=last_day(hiredate)-2;

10、找出早于12年前受雇的员工。

select * from emp where hiredate

11、以首字母大写的方式显示所有员工的姓名

select initcap(ename) from emp;

12、显示正好为5个字符的员工的姓名

select ename from emp where ename like '_____';

13、显示不带‘R’的员工的姓名

select ename from emp where ename not like '%R%';

14、显示所有员工姓名的前三个字符

select substr(ename,1,3) from emp;

15、显示所有员工的姓名,用‘a‘ 替换所有的’A’

select translate(ename,'A','a') from emp;

16、显示满10年服务年限的员工的姓名和受雇日期。

select ename,hiredate from emp where sysdate>add_months(hiredate,12*10);

17、显示员工的详细资料,按姓名排序。

select * from emp order by ename;

18、显示员工的姓名和受雇日期,根据期服务年限,将最老的员工排在最前面。

select ename,hiredate from emp order by hiredate;

19、显示所有员工的姓名,工作和薪金,按工作的降序排序,若工作相同按薪金排序。

select ename,job,sal from emp order by job desc,sal;

20、显示所有员工的姓名、加入公司的年份和月份,按受雇日期所在月排序,若月份相同则将最早年份的员工排在最前面。

select ename,to_char(hiredate,'yyyy-month') from emp order by

to_char(hiredate,'month'),to_char(hiredate,'yyyy') ;

21显示在一个月为30天的情况所有员工的日薪金,忽略余数 select round(sal/30) from emp;

22、找出在(任何年份的)2月受聘的所有员工

select * from emp where hiredate like '%-2月%';

23、对于每个员工,显示其加入公司的天数。

select empno,ename,round(sysdate-hiredate) from emp

24、显示姓名字段的任何位置包含‘A’的所有员工的姓名

select ename from emp where ename like '%A%';

25 、以年、月、日的方式显示所有员工的服务年限。

Select months_between(sysdate,hiredate)/12 "年", months_between(sysdate,hiredate)

"月", sysdate-hiredate "日" from emp

26、列出至少有一个员工的所有部门

select dname from emp,dept where emp.deptno=dept.deptno group by dept.dname

having count(empno)>=1;

select * from dept where deptno in(select distinct deptno from emp);

27、列出薪金比“smith”多的员工。

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

28、 列出所有员工的姓名及其直接上级的姓名

select e1.empno,e1.ename,e2.empno,e2.ename from emp e1,emp e2 where

e1.mgr=e2.empno(+);

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

a where hiredate>(select hiredate from emp where empno=a.mgr);

30、 列出部门名称和这些部门的员工信息,同时列出那些没有员工的部门(左右关联问题)

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

31、 列出所有‘clerk’(办事员)的姓名及其部门名称,部门人数。

select e.ename,d.dname,dm.c from emp e,dept d,(select d.dname,count(*) c from

emp e,dept d where d.deptno = e.deptno and e.job = 'CLERK' group by d.dname) dm

where d.deptno = e.deptno and d.dname = dm.dname;

32、

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

select job,count(*) from emp group by job having min(sal)>1500;

33、 列出部门“SALES”(销售部)工作的员工的姓名,假定不知道销售部的部门编号

select ename from emp where deptno=(select deptno from dept where

dname='SALES');

34、 列出薪金高于公司平均薪金的所有员工,所在部门,上级领导,公司的工资等级。

select e.ename,m.ename mname,d.deptno,d.dname,s.grade from emp e,emp

m,dept d,salgrade s

where e.sal>(select avg(sal) from emp) and e.mgr=m.empno and e.deptno=d.deptno

and e.sal between losal and hisal;

35、 列出与“SCOTT”从事相同工作的所有员工及部门名称。

select e.ename,d.dname from emp e,dept d where job=(select job from emp where

ename='SCOTT') and e.deptno=d.deptno;

36、 列出薪金等于部门30中员工的薪金的所有员工的姓名和薪金

select * from emp where sal in (select sal from emp where deptno=30);

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

select e.ename,e.sal,d.dname from emp e,dept d where sal >all (select sal from emp

where deptno=30) and e.deptno=d.deptno;

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

select deptno,count(*),trunc(avg(sal+nvl(comm,0))) avgsal, trunc(avg(sysdate-hiredate)) avgday from emp group by deptno;

39、 列出所有员工的姓名,部门名称和工资

select ename,dname,sal+nvl(comm,0) from emp,dept where

emp.deptno=dept.deptno;

40、 列出所有部门的详细信息和部门人数

select dept.*,(select count(*) from emp group by deptno having deptno=dept.deptno)

tot

from dept;

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

select ename,sal from emp where sal in(select min(sal) from emp group by job)

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

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

43、 列出所有员工的年工资,按年薪从低到高排序

select ename,(sal+nvl(comm,0))*12 a from emp order by a;

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

select distinct e2.* from emp e1,emp e2 where e1.mgr=e2.empno and e2.sal>3000