数据库开发面试题答案详解Word文档下载推荐.docx
《数据库开发面试题答案详解Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数据库开发面试题答案详解Word文档下载推荐.docx(10页珍藏版)》请在冰豆网上搜索。
乙'
4);
C'
丙'
1);
丁'
5);
D'
3);
E'
F'
G'
9);
--查看一下刚插入的信息是否正确
select*from购物信息
--答案
select*from购物信息
where购物人in(select购物人from购物信息groupby购物人havingcount(*)>
=2)
orderby购物人
36.表名:
成绩表
姓名课程分数
张三语文81
张三数学75
李四语文56
李四数学91
王五语文81
王五数学100
王五英语49
(其它用户实验的记录大家可自行插入)
给出成绩全部合格的学生信息(包含姓名、课程、分数),注:
分数在60分以上评人合格
createtable成绩表
(
姓名varchar(20),
课程varchar(20),
分数number
);
insertinto成绩表values('
张三'
语文'
81);
数学'
75);
李四'
56);
91);
王五'
100);
英语'
49);
select*from成绩表;
--答案
select*from成绩表
where姓名notin(select姓名from成绩表where分数<
60groupby姓名)
37.表名:
高考成绩
准考证号课程成绩
2006001语文119
2006001数学108
2006002物理142
2006001化学136
2006001物理127
2006002数学149
2006002英语110
2006002语文105
2006001英语98
2006002化学129
2006003英语100
2006003物理81
2006003化学95
2006003语文35
2006003数学118
(其他用记实验的记录大家可自行插入)
给出高考分数在600分以上的学生准考证号
createtable高考成绩
准考证号number,
成绩number
insertinto高考成绩values(2006001,'
119);
108);
insertinto高考成绩values(2006002,'
物理'
142);
化学'
136);
127);
149);
110);
105);
98);
129);
insertinto高考成绩values(2006003,'
95);
35);
118);
update高考成绩set成绩=140where准考证号=2006003and课程='
update高考成绩set成绩=160where准考证号=2006003and课程='
select*from高考成绩orderby准考证号
--答案
--方法一:
select准考证号,总成绩
from(select准考证号,sum(成绩)总成绩from高考成绩groupby准考证号orderby总成绩desc)
where总成绩>
600
--方法二:
from(select准考证号,sum(成绩)over(partitionby准考证号orderby准考证号)总成绩from高考成绩)
38.表名:
商品表
名称产地进价
苹果烟台2.5
苹果云南1.9
苹果四川3
西瓜江西1.5
西瓜北京2.4
.....
(其它用户实验的记录大家可自行录入)
给出平均进价在2元以下的商品名称
createtable商品表
名称varchar(20),
产地varchar(20),
进价number
insertinto商品表values('
苹果'
烟台'
2.5);
云南'
1.9);
四川'
西瓜'
江西'
1.5);
北京'
2.4);
select*from商品表
select名称,平均价from(select名称,avg(进价)平均价from商品表groupby名称)
where平均价<
2
39.表名:
club
idgenderage
67M19
68F30
69F27
70F16
71M32
(其余测试数据请自行插入)
查询出该俱乐部里男性会员和女性会员的总数
createtableclub
idnumber,
genderchar,
agenumber
insertintoclubvalues(67,'
M'
19);
insertintoclubvalues(68,'
30);
insertintoclubvalues(69,'
27);
insertintoclubvalues(70,'
16);
insertintoclubvalues(71,'
32);
select*fromclub
selectsum(casewhengender='
thencount(*)end)男性会员数量,
sum(casewhengender='
thencount(*)end)女性会员数量
fromclub
groupbygender
40.表名:
team
idname
1a
2b
3b
4a
5c
6c
7c
8d
要求:
执行一个删除语句,当name列上有相同时,只保留id这列上值小的
例如:
删除后的结果应如下:
5c
请写出SQL语句
createtableteam
namevarchar2(20)
insertintoteamvalues(1,'
a'
insertintoteamvalues(2,'
b'
insertintoteamvalues(3,'
insertintoteamvalues(4,'
insertintoteamvalues(5,'
c'
insertintoteamvalues(6,'
insertintoteamvalues(7,'
insertintoteamvalues(8,'
d'
select* fromteam
selectmin(id)fromteamawherea.namein(selectidfromteamwhereid=1orid=2orid=5orid=8groupbyname)
deletefromteamwhereidnotin(selectmin(id)idfromteamgroupbynamehavingcount(*)>
=1)
--groupbynamehavingcount(*)>
=1统计以姓名分组里面的记录条数;
不能使用orderby排序
deletefromteamwhereidnotin(selectmin(id)idfromteamgroupbyname)
41.表名:
student
namecoursescore
张青语文72
王华数学72
张华英语81
张青物理67
李立化学98
张燕物理70
张青化学76
查询出“张”姓学生中平均成绩大于75分的学生信息
createtablestudent
namevarchar(20),
coursevarchar(20),
scorenumber
insertintostudentvalues('
张青'
72);
王华'
张华'
67);
李立'
张燕'
70);
76);
张沈超'
90);
140);
select*fromstudent
select*fromstudent
wherenamein(selectnamefromstudentwherenamelike'
张%'
groupbynamehavingavg(score)>
75)
orderbyname
----查询所有人的平均成绩
selectname,avg(score)avgfromstudentgroupbynameorderbyavgdesc