登录  /  注册

Oracle面试题及答案整理

z老师
发布: 2016-06-07 16:54:24
原创
5354人浏览过

Oracle面试题及答案整理

1、表:table1(FId,Fclass,Fscore),用最高效最简单的SQL列出各班成绩最高的列表,显示班级,成绩两个字段。 select fclass,max(f

表:table1(FId,Fclass,Fscore),用最高效最简单的SQL列出各班成绩最高的列表,显示班级,成绩两个字段。

select fclass,max(fscore) from table1 group by fclass,fid
登录后复制

【专题推荐】:2020年oracle面试题汇总(最新)

2、有一个表table1有两个字段FID,Fno,字都非空,写一个SQL语句列出该表中一个FID对应多个不同的Fno的纪录。

类如:

101a1001
101a1001
102a1002
102a1003
103a1004
104a1005
104a1006
105a1007
105a1007
105a1007
登录后复制

结果:

102a1002
102a1003
104a1005
104a1006
登录后复制
select t2.* from table1 t1, table1 t2 where t1.fid = t2.fid and t1.fno <> t2.fno;
登录后复制

3、有员工表empinfo

(
Fempno varchar2(10) not null pk,
Fempname varchar2(20) not null,
Fage number not null,
Fsalary number not null
);
登录后复制

假如数据量很大约1000万条;写一个你认为最高效的SQL,用一个SQL计算以下四种人:

fsalary>9999 and fage > 35
fsalary>9999 and fage < 35
fsalary <9999 and fage > 35
fsalary <9999 and fage < 35
登录后复制

每种员工的数量;

select sum(case when fsalary > 9999 and fage > 35
then 1
else 0end) as "fsalary>9999_fage>35",
sum(case when fsalary > 9999 and fage < 35
then 1
else 0
end) as "fsalary>9999_fage<35",
sum(case when fsalary < 9999 and fage > 35
then 1
else 0
end) as "fsalary<9999_fage>35",
sum(case when fsalary < 9999 and fage < 35
then 1
else 0
end) as "fsalary<9999_fage<35"
from empinfo;
登录后复制

4、表A字段如下

month person income

月份 人员 收入

要求用一个SQL语句(注意是一个)的处所有人(不区分人员)每个月及上月和下月的总收入

要求列表输出为

月份 当月收入 上月收入 下月收入

MONTHS PERSON INCOME
---------- ---------- ----------200807 mantisXF 5000200806 mantisXF2 3500200806 mantisXF3 3000200805 mantisXF1 2000200805 mantisXF6 2200200804 mantisXF7 1800200803 8mantisXF 4000200802 9mantisXF 4200200802 10mantisXF 3300200801 11mantisXF 4600200809 11mantisXF 6800
11 rows selected
select months, max(incomes), max(prev_months), max(next_months)
from (select months,
incomes,
decode(lag(months) over(order by months),
to_char(add_months(to_date(months, &#39;yyyymm&#39;), -1), &#39;yyyymm&#39;), lag(incomes) over(order by months), 0) as prev_months, decode(lead(months) over(order by months), to_char(add_months(to_date(months, &#39;yyyymm&#39;), 1), &#39;yyyymm&#39;), lead(incomes) over(order by months), 0) as next_months from (select months, sum(income) as incomes from a group by months) aa) aaagroup by months;
MONTHS MAX(INCOMES) MAX(PREV_MONTHS) MAX(NEXT_MONTHS)---------- ------------ ---------------- ----------------200801 4600 0 7500200802 7500 4600 4000200803 4000 7500 1800200804 1800 4000 4200200805 4200 1800 6500200806 6500 4200 5000200807 5000 6500 0200809 6800 0 0
登录后复制

5,表B

C1 c2
2005-01-01 1
2005-01-01 3
2005-01-02 5
登录后复制

要求的处数据

2005-01-01 4

2005-01-02 5

合计 9

试用一个Sql语句完成。

select nvl(to_char(t02,&#39;yyyy-mm-dd&#39;),&#39;合计&#39;),sum(t01)from test
group by rollup(t02)
登录后复制

6,数据库1,2,3 范式的概念与理解。

7,简述Oracle行触发器的变化表限制表的概念和使用限制,行触发器里面对这两个表有什么限制。

8、oracle临时表有几种。

临时表和普通表的主要区别有哪些,,使用临时表的主要原因是什么?

9,怎么实现:使一个会话里面执行的多个过程函数或触发器里面都可以访问的全局变量的效果,并且要实现会话间隔离?

10,aa,bb表都有20个字段,且记录数量都很大,aa,bb表的X字段(非空)上有索引,

请用SQL列出aa表里面存在的X在bb表不存在的X的值,请写出认为最快的语句,并解译原因。

相关学习推荐:oracle数据库学习教程

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号