oracle维护面试笔试题目,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数据库面试笔试试题总结】相关文章:

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值