应用随机过程习题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

20.查找EMP表中前5条记录 21查找EMP表中10条以后的记录 22查找EMP表中薪水第5高的员工
20 SELECT * FROM emp WHERE ROWNUM<=5;
21 SELECT * FROM (SELECT a.*,ROWNUM AS rn FROM emp a) WHERE rn>10;
• if v_mycur.job='CLERK' and v_mycur.loc='NEW YORK' then

update emp set sal = sal *0.95 where
empno=v_mycur.empno;
• end if;
• end loop;
13.列出在每个部门工作的员工数量、平均 工资和平均服务期限。
14.列出所有员工的姓名、部门名称和工资。
15.列出从事同一种工作但属于不同部门的 员工的一种组合。
13.select d.deptno,d.dname, count(e.ename), avg(e.sal), avg(months_between(sysdate,e.hiredate)) from emp e, dept d where e.deptno(+)= d.deptno group by d.deptno,dname;
18.select deptno,min(sal) from emp where job=upper('manager') group by deptno ;
19.select ename , (sal+nvl(comm,0))*12 yearsal from emp order by yearsal ;
• eno emp.empno%type;
• begin
• eno:=&no;
• for v_emp in c_emp(eno) loop
• if v_emp.job='MANAGER' and v_emp.loc='DALLAS' then

update emp set sal = sal *1.15 where empno=eno;
作那么就给他薪金扣除5%;其他情况不作处理。 4.接收一个员工号,输出这个员工所在部门的平均
工资
5.以交互的方式给部门表插入一条记录,如果出现 主键冲突的异常,请显示“部门号已被占用”的 字样
• declare
• CURSOR c_emp(p_empno emp.empno%TYPE) IS
• SELECT emp.job,emp.empno,dept.loc,emp.deptno FROM emp,dept WHERE emp.deptno=dept.deptno and emp.empno=p_empno;
12.select ename, sal,job from emp where sal >all (select sal from emp where deptno=30);
或者 select ename ,sal from emp where sal>(select max(sal) from emp where deptno=30);
4.列出受雇日期早于其直接上级的所有员工。
5.列出部门名称和这些部门的员工信息,同 时列出那些没有员工的部门。
6.列出所有“CLERK”(办事员)的姓名 及其部门名称。
4.select e.ename, e.mgr , e.hiredate,w.ename,w.hiredate from emp e, emp w where e.mgr=w.empno and e.hiredate< w.hiredate;
16.列出所有部门的详细信息和部门人数。
17.列出各种工作的最低工资。
18.列出各个部门的MANAGER(经理)的 最低薪金。
19.列出所有员工的年工资,按年薪从低到高 排序。
16.select count(e.ename),d.dname from emp e, dept d where e.deptno(+)= d.deptno group by e.deptno,d.dname;
6.select e.ename,e.hiredate,e.job, d.dname,d.deptno from emp e, dept d where e.deptno =d.deptno and e.job=upper('clerk');
7.列出最低薪金大于1500的各种工作。
8.列出在部门“SALES”(销售部)工作的 员工的姓名,假定不知道销售部的部门编 号。
5.select e.ename,e.hiredate, d.dname,d.deptno from emp e, dept d where e.deptno (+)=d.deptno;
本例子使用的是外连接, 也可以用右连接。 select e.ename,e.hiredate, d.dname,d.deptno from emp e right join dept d on e.deptno=d.deptno;
14.select d.dname, e.ename, sal+nvl(comm,0) from emp e, dept d where d.deptno=e.deptno;
15. select e.ename,e.job, e.deptno ,d.job, d.deptno from emp e, emp d where e.job=d.job and e.deptno<>d.deptno;
9.列出薪金高于公司平均薪金的所有员工。
7.select job, min(sal) from emp group by job having min(sal)>1500;
8.select e.ename,d.dname from emp e,dept d where e.deptno=d.deptno and d.dname=upper('sales'); 或者: select ename from emp where deptno = (select deptno from dept where dname=upper('SALES'));
或者写成 select d.deptno,e.*,d.dname from (select deptno,count(ename) from emp group by deptno) e,dept d where e.deptno(+)= d.deptno;
17.select job,min(sal+nvl(comm,0))from emp group by job;ຫໍສະໝຸດ Baidu
• begin
• for v_mycur in mycur loop
• if v_mycur.job='MANAGER' and v_mycur.loc='DALLAS' then

update emp set sal = sal *1.15 where empno=v_mycur.empno;
• end if;
使用PL/SQL块编程实现,注意必要的异常处理 1.输入一个员工号,输出该员工的姓名、薪金和大
概的服务年限(按年月日显示)
2.接收一个员工号,输出该员工所在部门的名称 3.接收一个员工号,如果该员工职位是MANAGER,
并且在DALLAS工作那么就给他薪金加15%; 如果该员工职位是CLERK,并且在NEW YORK工
teacherxh varchar2(10) primary key, teachername varchar2(20) ); 插入记录,要求:教师的编号的格式是 TH00001,TH00002…….
建立序列 create sequence teacher_seq maxvalue 99999;
insert into teacher values ('TH'|| ltrim(to_char(teacher_seq.nextval,'00000')), '张三'); insert into teacher values ('TH'|| ltrim(to_char(teacher_seq.nextval,'00000')), '李');
10.select ename, job from emp where job = (select job from emp where ename=upper('scott'));
11.select ename, sal,job from emp where sal in (select sal from emp where deptno=30);
1.create table myemp as select * from emp;
表的约束是复制不过来的,需要自己去添加
create table mydept1 as select * from dept where 1=2
insert into mydept1 select * from dept where deptno>20;
2.select ename,job,mgr,hiredate,sal from emp where sal> (select sal from emp where ename='SMITH');
3.select e.ename, e.mgr , w.ename from emp e, emp w where e.mgr=w.empno;
• end if;
• if v_emp.job='CLERK' and v_emp.loc='NEW YORK' then

update emp set sal = sal *0.95 where empno=eno;
• end if;
• end loop;
• end;
3
• declare
• cursor mycur is select emp.empno,emp.job,dept.loc from emp ,dept where emp.deptno=dept.deptno;
或者create table mydept1 as select * from dept where deptno>20;
2.alter table myemp add constraint myemp_empno_pk primary key (empno);
创建以下表teacher create table teacher(
22 SELECT * FROM
(SELECT a.*,rownum AS rn FROM emp a ORDER BY sal DESC )
WHERE rn=5;
1、创建表myemp和emp表具有相同的结构和 记录。(若只是结构而没有数据呢?只复 制部分数据呢?)
2、给myemp的empno列添加主建约束。
或者下面的方法,这种方法更好理解,把需要汇总的生成一个视图e。 select e.*,d.dname from
(select deptno, count(ename) ,avg(sal),avg(months_between(sysdate,hiredate)/12) from emp group by deptno) e, dept d where e.deptno =d.deptno;
9.select ename, job, sal from emp where sal> (select avg(sal) from emp );
10.列出与“SCOTT”从事相同工作的所有 员工。
11.列出薪金等于部门30中员工的薪金的所 有员工的姓名和薪金。
12.列出薪金高于在部门30工作的所有员工 的薪金的员工姓名和薪金。
使用scott/tiger用户下的emp表和 dept表完成下列练习
1.列出至少有一个员工的所有部门。
2.列出薪金比“SMITH”多的所有员工。
3.列出所有员工的姓名及其直接上级的姓名。
1.select distinct dname from dept where deptno in (select distinct deptno from emp);
相关文档
最新文档