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

Oracle数据库1.基础测试选择在部门 30 中员工的所有信息Select * from emp where deptno=30;列出职位为(MANAGER)的员工的编号,姓名Select empno,ename from emp where job = ?Manager ?;找出奖金高于工资的员......

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

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

  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

  所有员工名字前加上 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(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

  );

  • 免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。[版权声明] 本站所有文章由用户发布,若内容存在侵权,请联系网站客服处理。
  • 发表于 2024-05-17 04:00:13
  • 阅读 ( 3 )
  • 举报

你可能感兴趣

推荐阅读

0 条评论

请先 登录 后评论
吴家菱
吴家菱

49 篇文章

作家榜 »

  1. 小红书运营 1472 文章
  2. APP运营 1435 文章
  3. 抖音运营 1432 文章
  4. 小程序运营 1405 文章
  5. 网站运营 1397 文章
  6. 电商运营 1360 文章
  7. 微信运营 1228 文章
  8. 视频号运营 1096 文章
站长微信
微信号: yunentropykeji
官网制作、商城开发、小程序开发
微信沟通