首页 > 数据库技术 > 详细

公司考核题-(ORACLE篇一)

时间:2015-02-18 17:40:30      阅读:355      评论:0      收藏:0      [点我收藏+]

今天无聊翻腾刚毕业时的电脑,发现11年在单位实习时的一些练习题及考核试题和答案,现在在此记录一下,方便以后查阅。

考核一:

--1、列出薪金比"SMITH"多的所有雇员
     select * from emp where sal > (select sal from emp where ename=‘SMITH‘);
--2、找出佣金高于薪金60%的雇员
     select * from emp where comm>(sal*0.6);      
--3、找出收取佣金的雇员的不同工作
     select job from emp where comm is not null;
--4、列出入职日期早于其直接上级的所有雇员
     select e.empno,e.ename,e.mgr ,e.hiredate,m.hiredate from emp e,emp m where m.empno=e.mgr and e.hiredate < m.hiredate;
--5、列出所有“CLERK”(办事员)的姓名及其部门名称
     select t.ename,d.dname from emp t,dept d where t.job=‘CLERK‘ and t.deptno=d.deptno;
--6、列出各种工作类别的最低薪金,显示最低薪金大于1500的记录
     select job,min(sal) from emp group by job having min(sal)>1500;
--7、列出从事“SALES”(销售)工作的雇员的姓名,假定不知道销售部的部门编号   
     select job,ename from emp where substr(job,1,5)=‘SALES‘;
     select e.job, e.ename ,e.deptno from emp e where e.deptno=(select d.deptno from dept d where d.dname=‘SALES‘);
--8、列出薪金高于公司平均水平的所有雇员
     select * from emp where sal> (select avg(sal) from emp);
--9、列出与“SCOTT”从事相同工作的所有雇员
     select * from emp where job =( select job from emp where ename=‘SCOTT‘);
--10、列出各种类别工作的最低工资
     select job,min(sal) from emp group by job;
--11、列出各个部门的MANAGER(经理)的最低薪金
     select deptno,min(sal) from (select * from emp where job=‘MANAGER‘) group by deptno ;
--12、列出所有雇员的雇员名称、部门名称和薪金
     select emp.ename,dept.dname,sal from emp,dept where emp.deptno=dept.deptno;

考核二:
1.若“库名”为“GB”或“HB”或“WB”,则访问路径为:http://10.122.1210.203:2022/分类编码按每两位一拆分,中间用“/”隔开/file/文件名
   例如:http://10.122.1210.203:2022/B3/JH/I0/file/123.doc

2.若“库名” 为“QY” 则访问路径为:http://10.122.1210.203:2022/file/QY/文件名
   例如:http://10.122.1210.203:2022/file/QY/123.doc

3.以上两种情况以外的“库名”,则访问路径为:http://10.122.1210.203:2022/file/文件名
   例如:http://10.122.1210.203:2022/file/123.doc

存储过程如下:
create or replace function myfunc(filename varchar2,truclen number)return varchar2 is
i number(20);
fpath varchar(1000);
len number(20);
 begin
   len:=length(filename);
   i:=0;
   if len>truclen then
     while i<len loop<="" div="">
       fpath:=fpath||substr(filename,i,truclen)||‘/‘;
       i:=i+truclen;
     end loop;
   else
     fpath:=fpath||‘/‘;
   end if;
   return (fpath);
  end myfunc;

create or replace procedure myproc is
fpath varchar2(1000);
cursor db_cursor is select * from qy;
classid varchar2(200);
begin

   for r in db_cursor loop
     if r.dbname=‘GB‘ or r.dbname=‘HB‘ or r.dbname=‘wb‘ then
       classid:=myfunc(r.classid,2);
       fpath:=‘http://10.122.1210.203:2022/‘||classid||‘/file‘||‘/‘||r.filename;
     elsif r.dbname=‘QY‘ then
       fpath:= ‘http://10.122.1210.203:2022/‘||‘QY/‘||r.filename;
     else
       fpath:= ‘http://10.122.1210.203:2022/file/‘||r.filename;
     
     end if;
     insert into qy_new values(r.dbname,r.classid,r.filename,fpath);
   end loop;

end;



公司考核题-(ORACLE篇一)

原文:http://blog.csdn.net/fengshuiyue/article/details/43877295

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!