SQL语句面试问答(三)

DROP TABLE IF EXISTS 'students';
CREATE TABLE 'students' (
	'Sid' varchar(11) NOT NULL, -- 学生ID 
	'Sname' varchar(20) DEFAULT NULL, -- 学生名字
	'Sage' int(11) DEFAULT NULL, -- 学生年龄
	PRIMARY KEY ('Sid')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO 'students' VALUES ('s01','巧虎','18');
INSERT INTO 'students' VALUES ('s02','琪琪','19');
INSERT INTO 'students' VALUES ('s03','桃乐比','18');
INSERT INTO 'students' VALUES ('s04','圆圆','17');
INSERT INTO 'students' VALUES ('s05','美美','20');
INSERT INTO 'students' VALUES ('s06','多比','25');
DROP TABLE IF EXISTS 'teachers';
CREATE TABLE 'teachers' (
	'Tid' varchar(11) NOT NULL, -- 老师id
	'Tname' varchar(20) DEFAULT NULL, -- 老师名字
	PRIMARY KEY ('Tid')
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO 'teachers' VALUES ('1','汪老师');
INSERT INTO 'teachers' VALUES ('2','石老师');
INSERT INTO 'teachers' VALUES ('3','李老师');
INSERT INTO 'teachers' VALUES ('4','熊老师');
INSERT INTO 'teachers' VALUES ('5','王老师');
INSERT INTO 'teachers' VALUES ('6','梁老师');
DROP TABLE IF EXISTS 'courses';
CREATE TABLE 'courses'(
	'Cid' varchar(11) NOT NULL, -- 课程id
	'Cname' varchar(20) DEFAULT NULL, -- 课程名字
	'Cteacher' varchar(20) DEFAULT NULL, -- 课程老师
	PRIMARY KEY ('Cid')
)ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO 'courses' VALUES ('c01','美术','汪老师');
INSERT INTO 'courses' VALUES ('c02','音乐','石老师');
INSERT INTO 'courses' VALUES ('c03','体能','李老师');
INSERT INTO 'courses' VALUES ('C04','自行车','熊老师');
INSERT INTO 'courses' VALUES ('c05','钢琴','王老师');
DROP TABLE IF EXISTS 'results';
CREATE TABLE 'results'(
	'id' int(11) NOT NULL AUTO_INCREMENT, -- 成绩id
	'Sid' varchar(11) DEFAULT NULL, -- 学生 id
	'Cid' varchar(11) DEFAULT NULL, -- 课程 id
	'Cscore' varchar(11) DEFAULT NULL, -- 课程成绩
	PRIMARY KEY ('id')
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;

INSERT INTO 'results' VALUES ('1','s01','c01','58');
INSERT INTO 'results' VALUES ('2','s01','c02','59');
INSERT INTO 'results' VALUES ('3','s01','c03','55');
INSERT INTO 'results' VALUES ('4','s02','c02','83');
INSERT INTO 'results' VALUES ('5','s02','c05','79');
INSERT INTO 'results' VALUES ('6','s02','c04','77');
INSERT INTO 'results' VALUES ('7','s03','c01','55');
INSERT INTO 'results' VALUES ('8','s03','c03','81');
INSERT INTO 'results' VALUES ('9','s03','c04','73');
INSERT INTO 'results' VALUES ('10','s04','c01','67');
INSERT INTO 'results' VALUES ('11','s04','c02','78');
INSERT INTO 'results' VALUES ('12','s04','c03','82');
INSERT INTO 'results' VALUES ('13','s04','c05','80');
INSERT INTO 'results' VALUES ('14','s05','c01','61');
INSERT INTO 'results' VALUES ('15','s04','c04','78');

1、查询并统计同龄学生人数

select Sage as 年龄,count(*) as 人数 from students group by Sage order by Sage

2、查询每门课程的平均成绩,结果按平均成绩升序排列,平均成绩相同时,按课程号降序排列

select Cid, avg(CScore) from results group by Cid order by avg(CScore) ,Cid desc

3、按平均成绩从高到低显示所有学生的平均成绩

select Sid, avg(CScore) from results group by Sid order by avg(Cscore) desc

4、查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分

select r.Cid as 课程ID, c.Cname as 课程name, 
max(r.Cscore) as 最高分, min(r.Cscore) as 最低分, avg(r.Cscore) as 平均分
from result as r inner join courses as c on r.cid=c.cid
group by 课程ID

5、按各科平均成绩从低到高顺序排序

select Cid, avg(Cscore) from results group by Cid

6、查询学生的总成绩并进行排名

select Sid, sum(Cscore) from results group by Sid order by sum(Cscore) desc

7、检索至少选修两门课程的学生学号

select Sid, count(Cid) from results order by Sid having count(Cid)>=2

8、查询出只选修了一门课程的全部学生的学号和姓名

select r.Sid,s.Sname from student as s 
inner join result as r where s.Sid=r.Sid
group by r.Sid having count(r.Cid)=1

9、查询每门课都在70分以上的学生id

select Sid from results group by Sid having min(Cscore)>70

10、查询课程编号为"c01"且课程成绩在60分以上的学生的学号和姓名

select r.Sid, s.Sname from students as s 
inner join results as r where s.Sid=r.Sid
where r.sid='c01' and r.Cscore>=60

11、查询平均成绩大于60分的同学的学号和平均成绩

select Sid, avg(Cscore) from results group by Sid having avg(Cscore)>60

12、查询所有同学的学号、姓名、选课数、总成绩

select r.Sid,s.Sname,count(r.Cid),sum(r.Cscore) 
from students as s inner join results as r where s.Sid=r.Sid
group by r.Sid

#测试##SQL面试#
测试岗面经 文章被收录于专栏

整理面试过程中的测试问答,常看常新,多多学习!有些问题是从其他人那里转载而来,会在文章下面注明出处,希望大家多多支持~~

全部评论

相关推荐

07-11 17:51
已编辑
河北大学 Java
首先就是做一下自我介绍1.你的项目自己一个人做,是怎么部署的,是阿里云还是什么(麻了没部署过)2.那如果是分布式场景,网页如果加载过慢,你怎么排查是哪个方面问题(当时听到就蒙了,就答了个sql调优)后来又问,你怎么知道一定是sql原因,怎么看是不是其他原因(没答出来)3.你刚刚提到sql,那mysql查询语句一个流程。4.优化器怎么优化的(没了解,就说了个联合索引)5.我们的sql其实也是一个字符串,那他到底是怎么执行的(问题没记清楚,人已经麻了,完全没想到过)6.redis有缓存,如果我数据库缓存足够大,是不是不需要redis了(之前说了个缓存怎么判断,所以我又扯那个上面了,他说好像也是)7.说说缓存穿透和缓存雪崩怎么解决(刚说完缓存穿透就问下面的了)8.你自己该怎么实现布隆过滤器(太复杂,没实现过,直接说不会了)9.说说url到显示的一个过程(扯远了,扯到spring mvc 被叫停了)10.不需要说mvc,那你说说dns和tcp的过程(猪脑过载,不会dns,tcp因为想dns,直接说不会了,回来一想完了)11.我看看,嗷没有说对并发了解,对集合了解对吧,说说常见集合类12.你怎么自己实现一个hashmap(脑子直接炸了,我说像源码用数组加链表和红黑树可以吗)他说为什么一定要用链表(我说插入和查询复杂度低)又追问不用行不行(不会了)13.你对spring aop了解,那你说说,我们只用spring提供的代码,怎么自己实现一个迷你的aop(没反应过来,现在想想,是在问动态代理吗,反正这时候已经宕机了)14.之前还问了,索引的底层实现,忘记写了15.也是之前的,你对io流有过了解,怎么通过自带的什么代码库什么什么,这个真记不清楚了,实现一个东西,忘了,已经对这些底层怕了16.平时遇到问题怎么解决,能理解英文文档吗(csdn,没怎么看过文档)17.之前的,怎么实现线程池反问环节:1.公司做大数据,招java主要的业务是什么用来做中控2.第一次面试,给点建议总结就是多看408估计是凉了~
程序员小白条:部署直接宝塔+一个服务器咯,阿里,腾讯随便搞,或者你 Docker 也行,网页加载慢,从OSI七层去看咯,sql直接到后端了,肯定不是啊,至少也得有前端吧,还有网关gateway,nginx,还有各种cdn等问题,自己老老实实背八股吧,很多都很基础的
查看22道真题和解析
点赞 评论 收藏
分享
评论
1
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务