Maison > base de données > tutoriel mysql > le corps du texte

Oracle面试题及答案整理

z老师
Libérer: 2020-07-31 17:31:40
original
5531 Les gens l'ont consulté

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
Copier après la connexion

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

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

类如:

101a1001
101a1001
102a1002
102a1003
103a1004
104a1005
104a1006
105a1007
105a1007
105a1007
Copier après la connexion

结果:

102a1002
102a1003
104a1005
104a1006
Copier après la connexion
select t2.* from table1 t1, table1 t2 where t1.fid = t2.fid and t1.fno <> t2.fno;
Copier après la connexion

3、有员工表empinfo

(
Fempno varchar2(10) not null pk,
Fempname varchar2(20) not null,
Fage number not null,
Fsalary number not null
);
Copier après la connexion

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

fsalary>9999 and fage > 35
fsalary>9999 and fage < 35
fsalary <9999 and fage > 35
fsalary <9999 and fage < 35
Copier après la connexion

每种员工的数量;

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;
Copier après la connexion

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
Copier après la connexion

5,表B

C1 c2
2005-01-01 1
2005-01-01 3
2005-01-02 5
Copier après la connexion

要求的处数据

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)
Copier après la connexion

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

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

8、oracle临时表有几种。

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

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

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

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

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

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal