oracle面试题整理二(10级学员 乔宇整理)

转载 2012年03月22日 20:22:59

oracle面试题整理二(10级学员 乔宇整理)

1.查询工资最高的3 名员工信息

select * from (select * from emp order by sal desc) where rownum <= 3;

分析我们先按照这个表中的工资降序排列,然后使用伪列也就是这个rownum来取前三个

2. 按工资进行排名,排名从1 开始,工资相同排名相同(如果两人并列第1 则没有第2 名,从第

三名继续排)

     select rank() over(order by sal) from emp;

分析,其中用到一个rank() over的函数,自己在网上查一下就知道了,很简单的!

3. 求入职日期相同的(年月日相同)的员工

select * from emp e where (select count(*) from emp where e.hiredate=hiredate)>1;

分析,就是按照出生日期分组,然后按里面有一个重复的,如果大于1,也就是说有重复的那么我们就查出来

4. 查询每个部门的最高工资

select deptno, max(sal) maxsal from emp group by deptno order by deptno;

分析这个没有什么要说的了,只要会分组就会了

5. 查询每个部门,每种职位的最高工资

select deptno, job, max(sal) from emp group by deptno, job order by deptno, job;

分析这个和18一样的了

6. 查询每个员工的信息及工资级别(用到表Salgrade)

select * from salgrade;

select e.*, sg.grade from emp e, salgrade sg where sal between losal and hisal;

 

这个题目就是考察你的基础呢?呵呵很简单的

7. 查询工资最高的第6-10 名员工

select * from (

select e.*,rownum rn from

(select * from emp order by sal desc) e

where rownum <=10)

where rn > 5;

这个题目很有意思的啊,好好的分析一下

我们首先查询里面的 select * from emp order by sal desc 就是按照降序查询,然后查出来伪列小于10的所有记录,然后我们在查询一次再找出记录大于五的,我们就知道了.

8. 查询各部门工资最高的员工信息

select * from emp e where e.sal = (select max(sal) from emp where (deptno = e.deptno));

首先查出来每个部分工资最高的然后根据序号对应得出各个部门的工资最高的员工信息

9. 查询每个部门工资最高的前2 名员工

select * from (

select rank() over (partition by deptno order by sal desc) rank, e.* from emp e

) where rank < 3;

这里解释一下,我们先用rank() over这个函数按照部门分组其中的工资降序,然后找到每个部门前两个就是了

10. 查询出有3 个以上下属的员工信息

select * from emp e where

(select count(*) from emp where e.empno = mgr) > 2;

分析,我们先找出来所有下属,然后用count函数统计每个下属的个数,然后看大于2的即可

11. 查询所有大于本部门平均工资的员工信息()

select * from emp e where sal >

(select avg(sal) from emp where (deptno = e.deptno))

order by deptno;

 

分析,先查出来每个部门的平均工资,然后根据部门相等,对应的写上即可

12. 查询平均工资最高的部门信息

select d.*, avgsal from dept d, (select avg(sal) avgsal, deptno from emp group by deptno) se

where avgsal = (select max(avg(sal)) from emp group by deptno) and d.deptno = se.deptno;

分析:

步骤1:求每个部门的平均工资:

select avg(sal) avgsal, deptno from emp group by deptno;

步骤2:求最高的平均工资:

select max(avg(sal)) from emp group by deptno;

步骤3:求平均工资最高的部门信息,连接步骤1 产生的临时表与真实表dept:

select d.*, avgsal from dept d, (select avg(sal) avgsal, deptno from emp group by deptno) se

where avgsal = (select max(avg(sal)) from emp group by deptno) and d.deptno = se.deptno;

13. 查询大于各部门总工资的平均值的部门信息

select d.*,sumsal from dept d, (select sum(sal) sumsal, deptno from emp group by deptno) se

where sumsal >(select avg(sum(sal)) from emp group by deptno) and se.deptno = d.deptno;

分析:

步骤1:求每个部门总工资

select sum(sal) sumsal, deptno from emp group by deptno;

步骤2:求每总工资平均值

select avg(sum(sal)) from emp group by deptno;

步骤3:求大于总工资平均值的部门信息,连接步骤1 产生的临时表与真实表dept:

select d.*,sumsal from dept d, (select sum(sal) sumsal, deptno from emp group by deptno) se

where sumsal >(select avg(sum(sal)) from emp group by deptno) and se.deptno = d.deptno;

14. 查询大于各部门总工资的平均值的部门下的员工信息(考察知识点:子查询,组函数,连接

查询)

select e.*,sumsal from emp e, (select sum(sal) sumsal, deptno from emp group by deptno) se

where sumsal >(select avg(sum(sal)) from emp group by deptno) and se.deptno = e.deptno;

 

这个题目呢,我们分析的时候是这样的,我们查找出来每个部门的总工资的平均工资,然后再查找出来每个部门的总工资,比较一下,然后根据部门号相等,就能算出来了

15. 查询没有员工的部门信息

select d.* from dept d left join emp e on (e.deptno = d.deptno) where empno is null;

分析,这个部门充分的利用了左连接的特点,自己分析一下即可.

 

如有质疑发送问题到qiaoshemei@163.com

Oracle常见面试题整理一(10级学员 郞志整理)

Oracle常见面试题整理 01  .查询各个部门的平均工资 SQL> select deptno,avg(nvl(sal,0)) from emp group by deptno; 02....
  • redarmy_chen
  • redarmy_chen
  • 2012年03月22日 20:09
  • 2149

Oracle常见的面试题四(10级学员 庞丽整理)

Oracle常见的面试题: 题目:现有STUDENT(学生),COURSE(课程),SC(成绩)表,完成以下需求。(建表语句在emp.sql中,综合考察) (1)       查询选修课程为w...
  • redarmy_chen
  • redarmy_chen
  • 2012年03月22日 20:54
  • 1924

oracle整理

一、生成HTML页面把下面的内容存为一个 .sql 脚本 ( 比如说 C:/q.sql) : SET ECHO OFF SET FEEDBACK OFFSET MARKUP HTML ON SPOOL...
  • hooligan000112003
  • hooligan000112003
  • 2006年02月08日 09:01
  • 658

oracle常见面试题(10级学员 赵成举整理)

oracle常见面试题 01.tmp 表中有如下记录 要求结果格式为:   答:这个题主要考察的是case.. when..和group by的用法 select rq, coun...
  • redarmy_chen
  • redarmy_chen
  • 2012年03月22日 20:28
  • 2779

分区表信息整理 for10g

oracle分区表资料整理 这里只是介绍oracle10r2的分区表资料,不包含11g的新特性。 一:分区表类型及介绍 Range(范围)分区 Range分区呢是应用范围比较广的表分区方式,它是以列...
  • yuzhenhuan01
  • yuzhenhuan01
  • 2011年10月10日 11:23
  • 1014

iOS面试题·自整理·One

——青灯素笺 ◆如何解决低内存问题? ForExample:将暂时没有展示在Window中的界面销毁,以获得足够的内存; ◆POST请求的数据类型有哪些? json、xml、二进制、参...
  • qq_30513483
  • qq_30513483
  • 2016年05月18日 15:49
  • 1276

整理面试题

整理面试题 1、说说Activity,Intent,Service是什么关系 。 答: 一个Activity通常是一个单独的屏幕,每一个Activity都被实现为一个单独的类,这些类都是从Acti...
  • u012216899
  • u012216899
  • 2016年07月05日 08:33
  • 120

Oracle数据库碎片整理

我们知道,Oracle作为一种大型数据库,广泛应用于金融、邮电、电力、民航等数据吞吐量巨大,计算机网络广泛普及的重要部门。对于系统管理员来讲,如何保证网络稳定运行,如何提高数据库性能,使其更加安全高效...
  • ghj1976
  • ghj1976
  • 2000年07月28日 18:19
  • 1760

剑指offer-面试题53:正则表达式匹配

题目:请实现一个函数用来匹配包含'.'和'*'的正则表达式。模式中的字符'.'表示任意一个字符,而'*'表示它前面的字符可以出现任意次(含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,...
  • moses1213
  • moses1213
  • 2016年04月26日 16:05
  • 850

iOS面试题总结整理(附答案)

iOS面试题总结整理(附答案) 多线程的实现方式; iOS中实现多线程的方案有4种 延迟执行的几种方式; 延迟1秒执行代码 -(void)delayMethod{ NS...
  • yutaotst
  • yutaotst
  • 2016年06月17日 11:18
  • 336
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:oracle面试题整理二(10级学员 乔宇整理)
举报原因:
原因补充:

(最多只允许输入30个字)