oracle面试题

本文精选了来自不同城市的五个SQL面试题目,涵盖数据查询、统计分析及复杂联表操作,通过实际案例帮助读者掌握SQL技能,提升面试表现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试题一(厦门)
Table: (员工emp1)
id name
1 a
2 b
3 c
4 d

Table:( 性别 sex)
id sex
1 男
4 女
5 男
1)找出忘记填写性别的员工;

Select * from emp1 where id not in(select id from sex);

面试题二(上海)
表一(AAA)
商品名称 商品总量
mc sl
A 100
B 120
表二(BBB)
商品名称 出库数量
mc sl
A 10
A 20
B 10
B 20
B 30
用一条 SQL 语句算出商品 A,B 目前还剩多少?

Select A.mc,A.sl-(select sum(BBB.sl) from BBB where A.mc=BBB.mc) 
from AAA A

面试题三(上海)
人员情况表(employee)中字段包括,员工号(ID),姓名(name),年龄(age),文化程 度(wh):包括四种情况(本科以上,大专,高中,初中以下),现在我要根据年龄字段查 询统计出:表中文化程度为本科以上,大专,高中,初中以下,各有多少人,占总人数多 少。结果如下:
学历 年龄 人数 百分比
本科以上 20 34 14
大专 20 33 13
高中 20 33 13
初中以下 20 100 40
本科以上 21 50 20
请写出对应的sql语句。(需要写出相应的建表语句,插入模拟数据语句等)

create table employee (ID number(10),name varchar2(20),age number(10),wh varchar2(20));
--
insert into employee select 1,'aa',20,'本科以上' from dual
union select 2,'bb',21,'本科以上' from dual
union select 3,'cc',20,'大专' from dual
union select 4,'dd',20,'高中' from dual
union select 5,'ee',20,'初中以下' from dual
--
select wh,age,count(id),round(count(id)/(select count(id) from employee)*100)||'%' as "百分比"
from employee
group by wh,age
order by wh

面试题四(福州)
四张表:
学生表 student(sid,sname), 教师表 teacher(tid,tname),
课程表 course(cid,cname,ctype), 选课表 choose_course(ccid,sid,tid,cid)
insert into student values(1,‘小明’);
insert into student values(2,‘小花’);

insert into teacher values(1,‘陈红’);
insert into teacher values(2,‘陈白’);

insert into course values(1,‘语文’,‘文科’);
insert into course values(2,‘数学’,‘理科’);
–小明选了陈红老师的语文
insert into choose_course values(1,1,1,1);
–小明选了陈红老师的数学
insert into choose_course values(2,1,1,2);
–小花选了陈红老师的数学
insert into choose_course values(3,2,1,2);
–小明选了陈白老师的语文
insert into choose_course values(1,1,2,1);
–小花选了陈红老师的语文
insert into choose_course values(4,2,1,1);
1.查找陈红老师教的学生是那些?

Select c.sid,s.sname 
from student s,choose_course c,teacher t
where t.tname='陈红' and t.tid=c.tid and s.sid=c.sid;

2.找学生小明所有的文科老师?

select * 
from teacher t,course c,choose_course ch,student s
where ch.sid=1 and c.ctype='文科' and s.sname='小明' and ch.cid=c.cid and ch.tid=t.tid;

3.找出没有选修陈红老师的学生?

select sid,sname
from student
minus
Select s.sid,s.sname 
from student s,choose_course c,teacher t
where t.tname='陈红' and t.tid=c.tid and s.sid=c.sid;

4.教的学生最少的老师?

select t.tid,t.tname,t2.cou 
from teacher t, ( select tid,cou 
                  from (select tid,count(distinct sid) cou

                        from choose_course group by tid order by cou) t1 
                  where rownum=1) t2 
where t.tid = t2.tid;

面试题五(广州)
教师号  星期号 是否有课
 1    2   有
 1    3   有
 2    1   有
 3    2   有`
 1    2   有
写一条sql语句得到下面的表:(各星期下的数字表示:对应的教师在星期几已经排的课数)

教师号 星期一 星期二 星期三
 1        2    1 
 2   1   
 3       1

select tid as "教师号"
       , sum(case week when 1 then 1 else 0 end) as "星期一"
       , sum(case week when 2 then 1 else 0 end) as "星期二"
       , sum(case week when 3 then 1 else 0 end) as "星期三"
  from tb_teacher_leson t
 group by t.tid;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值