oracle数据库面试笔试试题总结

时间:2021-03-16 11:02:38 综合指导 我要投稿

oracle数据库面试笔试试题总结

  Oracle数据库

oracle数据库面试笔试试题总结

  1.基础测试

  选择在部门 30 中员工的所有信息

  Select * from emp where deptno=30;

  列出职位为(MANAGER)的员工的编号,姓名

  Select empno,ename from emp where job = ?Manager ?;

  找出奖金高于工资的员工

  Select * from emp where comm>sal;

  找出每个员工奖金和工资的总和

  Select sal+comm,ename from emp;

  找出部门 10 中的经理(MANAGER)和部门 20 中的普通员工(CLERK)

  Select * from emp where (deptno=10 and job=?MANAGER?) or (deptno=20 and job=?CLERK?);

  找出部门 10 中既不是经理也不是普通员工,而且工资大于等于 2000 的员工 Select * from emp where deptno=10 and job not in(?MANAGER?,?CLERK) ? and sal>=2000;

  找出有奖金的员工的'不同工作

  Select distinct job from emp where comm is not null and comm>0

  找出没有奖金或者奖金低于 500 的员工

  Select * from emp where comm<500 or comm is null;

  显示雇员姓名,根据其服务年限,将最老的雇员排在最前面

  select ename from emp order by hiredate ;

  2.函数测试

  找出每个月倒数第三天受雇的员工(如:2009-5-29)

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

  找出 25 年前雇的员工

  select * from emp where hiredate<=add_months(sysdate,-25*12);< p="">

  所有员工名字前加上 Dear ,并且名字首字母大写

  select Dear || initcap(ename) from emp;

  找出姓名为 5 个字母的员工

  select * from emp where length(ename)=5;

  找出姓名中不带 R 这个字母的员工

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

  显示所有员工的姓名的第一个字

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

  显示所有员工,按名字降序排列,若相同,则按工资升序排序

  假设一个月为 30 天,找出所有员工的日薪,不计小数

  找到 2 月份受雇的员工

  select * from emp where to_hiredate,fmmm)=2;

  3.分组函数

  分组统计各部门下工资>500 的员工的平均工资、

  Select avg(sal) from emp where sal>500 group by deptno ;

  统计各部门下平均工资大于 500 的部门

  select deptno,avg(sal) from emp group by deptno having avg(sal)>500 ; 算出部门 30 中得到最多奖金的员工奖金

  Select max(comm) from emp where deptno = 30 ;

  算出部门 30 中得到最多奖金的员工姓名

  select ename from emp where comm = (select max(comm) from emp where deptno=30);

  算出每个职位的员工数和最低工资

  Select job,min(sal),count(*) from emp group by job;

  列出员工表中每个部门的员工数,和部门 no

  Select count(*),deptno from emp group by deptno;

  得到工资大于自己部门平均工资的员工信息

  select * from emp e1,(select deptno,avg(sal) as avgsal from emp group by deptno) e2

  where e1.deptno=e2.deptno and e1.sal > e2.avgsal;

  分组统计每个部门下,每种职位的平均奖金(也要算没奖金的人)和总工资(包括奖金) select deptno,job,avg(nvl(comm,0)),sum(sal+nvl(comm,0)) from emp group by deptno,job;

  4.多表联查

  列出员工表中每个部门的员工数,和部门 no

  select deptno,count(*) from emp group by deptno;

  列出员工表中每个部门的员工数(员工数必须大于 3) ,和部门名称

  select d.* ,ed.cou from dept d,(select deptno,count(*) cou from emp group by deptno having count(*)>3) ed where d.deptno=ed.deptno;

  找出工资比 jones 多的员工

  select * from emp where sal>=(select sal from emp where

  lower(ename)=jones);

  列出所有员工的姓名和其上级的姓名

  select e1.ename as lower ,e2.ename as upper from emp e1,emp e2 where e1.mgr

  = e2.empno;

  select e1.ename as lower ,e2.ename as upper from emp e1,emp e2 where e1.mgr = e2.empno(+);

  以职位分组,找出平均工资最高的两种职位

  Select * from ( select avg(sal) from emp order by job desc ) where rownum<3; 20="" select="" d.dname="" from="" emp="" dept="" d="" where="" and="" e.sal="">(select max(sal) from

  emp where deptno=20) and e.deptno=d.deptno

  得到平均工资大于 2000 的工作职种

  select job from emp group by job having avg(sal) > 2000;

  分部门得到工资大于 2000 的所有员工的平均工资,并且平均工资还要大于 2500 select deptno,avg(sal) from emp where sal>2000 group by deptno having avg(sal)>2500;

  得到每个月工资总数最少的那个部门的部门编号,部门名称,部门位置 select * from dept

  where

  deptno = (

  select e.deptno from

  (select deptno,sum(sal) from emp group by deptno order by sum(sal)) e

  where rownum=1

  );

【oracle数据库面试笔试试题总结】相关文章:

数据库面试笔试题06-26

数据库常见笔试面试题07-26

面试笔试题03-22

有关面试的笔试题09-03

护士面试笔试题09-03

华为面试笔试题08-19

人事面试笔试题08-14

电厂面试笔试题目07-12

中专面试笔试题目07-12

面试笔试题库03-22