就业数据资源平台
当前位置:首页 > 笔试题目
oracle(甲骨文)大量笔试题


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


select fclass,max(fscore) from table1 group by fclass,fid


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语句(注意是一个)的处所有人(不区分人员)每个月及上月和下月的总收入

要求列表输出为

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

就业数据资源平台