标签:oracle
今天无聊翻腾刚毕业时的电脑,发现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篇一)
标签:oracle
原文地址:http://blog.csdn.net/fengshuiyue/article/details/43877295