1 Oracle子查询精选面试题

有职员表emp,表结构表-1所示:

表-1 职员表emp 信息

职员表emp的示例数据如图-1所示。

图-1

有部门表dept,表结构如表-2所示:

表-2 部门表 dept 信息

部门表dept的示例数据如图-2所示。

图-2

请根据上述表结构和示例数据,完成如下查询。

1. SALES部门有哪些职位?

2. 哪些人不是别人的经理?

3. 谁的薪水比FORD高?如果有多个同名,比任何一个叫FORD的人高就行。

4.谁和FORD同部门?列出除了FORD之外的员工名字。

5. 哪个部门的人数比部门20的人数多?

6. 列出员工名字和职位 , 查询员工所在的部门平均薪水大于2000元的员工信息。

2 简述where子句中为什么不能写rownum>…

3 Oracle分页查询面试题

news表的表结构如图-3所示:

图-3

写SQL语句,按新闻时间倒序排列,即最新的排在最前面,每页输出5条,查询出第二页。

4 下列关于decode函数,说法正确的是

A. decode函数用来实现IF-ELSE的逻辑功能

B. decode函数建议设置默认值,如果未能与任一搜索条件匹配则函数返回默认值

C. decode函数只能处理字符串数据

D. decode函数的功能可以用case语句替代实现

5 下面SQL语句的输出结果是

SELECT ename, job, 
DECODE(job,'PRESIDENT','A',
'MANAGER','B',
'ANALYST','C',
'SALESMAN','D',
'CLERK','E'
) AS "Grade"
FROM EMP;

6 Oracle高级查询经典面试题

1.有学员表student,表结构如表-3所示:

表-3学员表student 信息

学员表student的示例数据如图-5所示。

图-5

2.在上题背景下,学生表中按照所在专业分组,同专业内按成绩倒序排序,成绩相同则按学号正序排序,并给予组内等级,用Rank_ID表示。

3.有专业表class,表结构如表-4所示:

表-4 专业表class信息

专业表的示例数据如图-6所示。

图-6

学员表的class_id数据参照class表cid列的数据。关联学员表student和class表,按照class_id分组,每组内按照学生成绩倒序排序,相同成绩按照学号正序排列,列出学生所在的专业名字、学生姓名、成绩及等级drank。

4. 创建mygroup,该表存储了每组员工的工资情况,创建表的SQL语句如下所示:

create table mygroup (
group_id number(4),
job varchar2(10), 
name varchar2(10), 
salary number(10,2)
);

向mygroup表中插入测试数据,SQL语句如下所示:

insert into mygroup values (10,'Coding',    'Bruce',1000);
insert into mygroup values (10,'Programmer','Clair',1000);
insert into mygroup values (10,'Architect', 'Gideon',1000);
insert into mygroup values (10,'Director',  'Hill',1000);

insert into mygroup values (20,'Coding',    'Jason',2000);
insert into mygroup values (20,'Programmer','Joey',2000);
insert into mygroup values (20,'Architect', 'Martin',2000);
insert into mygroup values (20,'Director',  'Michael',2000);

insert into mygroup values (30,'Coding',    'Rebecca',3000);
insert into mygroup values (30,'Programmer','Rex',3000);
insert into mygroup values (30,'Architect', 'Richard',3000);
insert into mygroup values (30,'Director',  'Sabrina',3000);

insert into mygroup values (40,'Coding',    'Samuel',4000);
insert into mygroup values (40,'Programmer','Susy',4000);
insert into mygroup values (40,'Architect', 'Tina',4000);
insert into mygroup values (40,'Director',  'Wendy',4000);

commit;

请统计各组工资的和以及工资总和,要求使用rollup函数完成。

5.分别按(group_id,job)、(group_id)、(job)以及全表统计工资和,要求使用CUBE函数来完成。

6.分别按(group_id)、(job)统计工资和,要求使用GROUPING SETS函数来完成。