面试题一(厦门)
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;