黑龙江科技学院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