面试题
dream_py
这个作者很懒,什么都没留下…
展开
-
45、 查询选修了全部课程的学生信息(重点划红线地方)
-- 45、 查询选修了全部课程的学生信息(重点划红线地方)SELECT s_id,COUNT(c_id) FROM scoreGROUP BY s_id HAVING COUNT(c_id)=3-- 方法二适应性更强SELECT s_id,COUNT(c_id) FROM scoreGROUP BY s_id HAVING COUNT(c_id)=(SELECT COUNT(c_id) FROM course)...原创 2020-06-09 08:54:41 · 2509 阅读 · 0 评论 -
44、检索至少选修两门课程的学生学号(不重要)(自己做出)
-- 44、检索至少选修两门课程的学生学号(不重要)SELECT s_id,COUNT(DISTINCT c_id) FROM scoreGROUP BY s_id HAVING COUNT(DISTINCT c_id)>=2原创 2020-06-09 08:45:44 · 10796 阅读 · 0 评论 -
43、统计每门课程的学生选修人数(超过5人的课程才统计)。要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列(不重要)
-- 43、统计每门课程的学生选修人数(超过5人的课程才统计)。-- 要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列(不重要)SELECT c_id, COUNT( distinct s_id) as num FROM scoreGROUP BY c_id HAVING num>5 ORDER BY num DESC,c_id ASC...原创 2020-06-09 08:36:09 · 30297 阅读 · 2 评论 -
35、查询所有学生的课程及分数情况(重点)
-- 35、查询所有学生的课程及分数情况(重点)SELECT st.s_id,st.s_name,MAX(CASE WHEN co.c_name='语文' then sc.s_score else NULL END) as '语文',MAX(CASE WHEN co.c_name='数学' then sc.s_score else NULL END) as '数学',MAX(CASE WHEN co.c_name='英语' then sc.s_score else NULL END) as '英语'原创 2020-06-04 20:34:48 · 2987 阅读 · 4 评论 -
40、查询选修“张三”老师所授课程的学生中成绩最高的学生姓名及其成绩(重要top)
-- 40、查询选修“张三”老师所授课程的学生中成绩最高的学生姓名及其成绩(重要top)SELECT st.s_name,sc.s_score FROM student as stINNER JOIN score as sc on st.s_id=sc.s_idINNER JOIN course as co on sc.c_id=co.c_idINNER JOIN teacher as te ON te.t_id=co.t_idWHERE te.t_name='张三'ORDER BY原创 2020-06-04 15:02:22 · 5938 阅读 · 2 评论 -
39、求每门课程的学生人数(不重要)(自己做出)
-- 39、求每门课程的学生人数(不重要)SELECT c_id,COUNT(c_id) FROM scoreGROUP BY c_id原创 2020-06-04 09:46:09 · 2861 阅读 · 1 评论 -
38、查询课程编号为03且课程成绩在80分以上的学生的学号和姓名(不重要)(自己做出)
-- 38、查询课程编号为03且课程成绩在80分以上的学生的学号和姓名(不重要)SELECT st.s_id,st.s_name,sc.s_score,co.c_id,co.c_name FROMstudent as stINNER JOINscore as sc on st.s_id=sc.s_idINNER JOINcourse as co on sc.c_id=co.c_idWHERE co.c_id='03' AND sc.s_score>80...原创 2020-06-04 09:41:30 · 5810 阅读 · 0 评论 -
37、查询不及格的课程并按课程号从大到小排列(不重点)(自己做出)
-- 37、查询不及格的课程并按课程号从大到小排列(不重点)SELECT * FROM scoreWHERE s_score<60ORDER BY s_id ASC原创 2020-06-04 09:30:50 · 3667 阅读 · 0 评论 -
36、查询课程成绩在70分以上的姓名、课程名称和分数(重点)
-- 36、查询课程成绩在70分以上的姓名、课程名称和分数(重点)SELECT st.s_name,co.c_name,sc.s_score FROM student as stINNER JOINscore as sc on st.s_id=sc.s_idINNER JOIN course as co on sc.c_id=co.c_idWHERE sc.s_score>70原创 2020-06-04 09:26:59 · 3700 阅读 · 0 评论 -
34、查询课程名称为数学,且分数低于60的学生姓名和分数(不重点)(自己做出)
-- 34、查询课程名称为"数学",且分数低于60的学生姓名和分数(不重点)SELECT st.s_name,st.s_id,co.c_name, sc.s_score FROM student as st INNER JOIN score as sc on st.s_id=sc.s_idINNER JOINcourse as co on sc.c_id=co.c_idWHERE co.c_name='数学' and sc.s_score<60...原创 2020-06-04 08:34:13 · 5010 阅读 · 0 评论 -
33、查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列(不重要)
-- 33、查询每门课程的平均成绩,结果按平均成绩升序排序,平均成绩相同时,按课程号降序排列(不重要)SELECT c_id,AVG(s_score)'mean' FROM scoreGROUP BY c_id ORDER BY mean ASC,c_id DESC原创 2020-06-01 18:42:16 · 17490 阅读 · 1 评论 -
32、查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩(自己做出)
-- 32、查询平均成绩大于等于85的所有学生的学号、姓名和平均成绩(不重要)SELECT st.s_id,st.s_name,AVG(sc.s_score)'mean' FROM student as stINNER JOINscore as sc on st.s_id=sc.s_idGROUP BY s_id HAVING mean>=85原创 2020-06-01 18:32:51 · 13066 阅读 · 1 评论 -
31、查询1990年出生的学生名单(重点year)
-- 31、查询1990年出生的学生名单(重点year)SELECT * FROM studentWHERE YEAR(s_birth)='1990'原创 2020-06-01 18:26:18 · 5824 阅读 · 0 评论 -
29 、(自己做出)
-- 29 查询名字中含有"风"字的学生信息(不重点)SELECT * FROM studentWHERE s_name like '%风%'原创 2020-05-29 18:04:09 · 140 阅读 · 0 评论 -
28、查询男生、女生人数(不重点)(自己做出)
-- 28、查询男生、女生人数(不重点)SELECT s_sex, count(distinct s_id) FROM studentGROUP BY s_sex原创 2020-05-29 17:55:04 · 2278 阅读 · 0 评论 -
-- 27、 查询出只有两门课程的全部学生的学号和姓名(不重点)(自己做出)
-- 27、 查询出只有两门课程的全部学生的学号和姓名(不重点)SELECT st.s_id,st.s_name,count(sc.c_id)'选修课程数两门'FROM student as stINNER JOINscore as sc ON st.s_id=sc.s_idGROUP BY st.s_id HAVING count(distinct sc.c_id)=2 ...原创 2020-05-29 17:49:08 · 4082 阅读 · 0 评论 -
-- 26、查询每门课程被选修的学生数(不重点)(自己做出)
-- 26、查询每门课程被选修的学生数(不重点)SELECT c_id,count(s_id)'人数' FROM scoreGROUP BY c_id原创 2020-05-29 17:40:26 · 10262 阅读 · 1 评论 -
18、查询各科成绩最高分、最低分和平均分,以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率, -- 优良率,优秀率
-- 18.查询各科成绩最高分、最低分和平均分:以如下形式显示:课程ID,课程name,最高分,最低分,平均分,及格率,中等率,-- 优良率,优秀率-- 及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90 (超级重点)SELECT co.c_id,co.c_name,max(sc.s_score)'最大值',min(sc.s_score)'最小值',AVG(sc.s_score)'平均分',SUM(CASE WHEN sc.s_score>=60 THE原创 2020-05-29 17:09:12 · 12438 阅读 · 4 评论 -
23、
-- 23、用分段[100-85),[85-70),[70-60),[<60]来统计各科成绩,分别统计各分数段人数:课程ID和课程名称(重点和18题类似)SELECT sc.c_id,co.c_name,SUM(CASE WHEN sc.s_score<=100 and sc.s_score>85 then 1 ELSE 0 END)'[100-85)',SUM(CASE WHEN sc.s_score<=85 and sc.s_score>70 then 1 ELSE原创 2020-05-28 08:29:38 · 204 阅读 · 0 评论 -
22、查询所有课程的成绩第2名到第3名的学生信息及该课程成绩(重要 25类似)(补)
后期补上原创 2020-05-28 08:48:09 · 2860 阅读 · 0 评论 -
21 、查询不同老师所教不同课程平均分从高到低显示(不重点)(自己做出)
-- 21 、查询不同老师所教不同课程平均分从高到低显示(不重点)SELECT b.t_id,b.t_name,a.c_name,a.c_id,AVG(c.s_score)'mean' FROMcourse as aINNER JOIN teacher as b ON a.t_id=b.t_idINNER JOINscore as c ON c.c_id=a.c_idGROUP BY c.c_id ORDER BY mean DESC -- 以课程为主体求平均分...原创 2020-05-28 07:59:18 · 4025 阅读 · 0 评论 -
20、查询学生的总成绩并进行排名(不重点)
-- 20、查询学生的总成绩并进行排名(不重点)SELECT s_id,SUM(s_score)'总成绩' FROM scoreGROUP BY s_idORDER BY SUM(s_score) DESC原创 2020-05-27 09:00:18 · 4616 阅读 · 0 评论 -
17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩(重重点与35一样)
-- 17、按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩(重重点与35一样)--再加INNER JOIN 是因为用了GROUP BY 语句不能再SELECT 里出现未有的信息,如c_idSELECT * FROMscore as bc_idINNER JOIN(SELECT s_id,AVG(s_score) '平均成绩' FROM scoreGROUP BY s_id)as a on a.s_id=b.s_idORDER BY a.平均成绩 DESC-- 17、按平原创 2020-05-27 08:53:28 · 10577 阅读 · 7 评论 -
16
-- 16、检索"01"课程分数小于60,按分数降序排列的学生信息(和34题重复,不重点)SELECT student.*,score.s_score FROMstudentINNER JOINscore ON student.s_id=score.s_idWHERE score.s_score<60 and score.c_id='01'ORDER BY score.s_score DESC...原创 2020-05-27 08:19:51 · 129 阅读 · 0 评论 -
15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩(重点)
-- 15、查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩(重点)SELECT a.s_id,a.s_name,b.mean FROM student AS a INNER JOIN (SELECT s_id,AVG(s_score)'mean' FROM score WHERE s_score<60GROUP BY s_id HAVING COUNT(distinct c_id)>=2)as bON a.s_id=b.s_id...原创 2020-05-26 09:09:44 · 8968 阅读 · 4 评论 -
12.查询和“01”号同学所学课程完全相同的其他同学的学号(重点)
-- ![12.查询和“01”号同学所学课程完全相同的其他同学的学号(重点)](https://img-blog.csdnimg.cn/20200526085247236.png#pic_center)--第一是满足选课数与01同学的选课数相同,第二是不含有01同学未选的课程SELECT s_id,s_name FROM student WHERE s_id in(SELECT distinct s_id FROM scoreWHERE s_id!='01'GROUP BY s_id HAVI原创 2020-05-26 08:54:43 · 2091 阅读 · 0 评论 -
11、查询至少有一门课与学号为“01”的学生所学课程相同的学生的学号和姓名(重点)
-- 11、查询至少有一门课与学号为“01”的学生所学课程相同的学生的学号和姓名(重点)SELECT s_id,s_name FROM studentWHERE s_id in (SELECT distinct s_id FROM score WHERE c_id in(SELECT c_id FROM scoreWHERE s_id='01') AND s_id!='01')...原创 2020-05-26 07:57:11 · 4933 阅读 · 0 评论 -
10.查询没有学全所有课的学生的学号、姓名(重点)
-- 10.查询没有学全所有课的学生的学号、姓名(重点)SELECT * FROM student as aLEFT JOIN score as bON a.s_id=b.s_idGROUP BY a.s_id HAVING COUNT(distinct b.c_id)<(SELECT COUNT(distinct c_id) FROM score)-- 要用LEFT JOIN原创 2020-05-25 22:02:21 · 5817 阅读 · 0 评论 -
9、查询所有课程成绩小于60分的学生的学号、姓名
-- 9、查询所有课程成绩小于60分的学生的学号、姓名SELECT a.s_id,c.s_name FROM (SELECT s_id,COUNT(c_id)as NN FROM scoreWHERE s_score<60GROUP BY s_id)as aINNER JOIN(SELECT s_id,COUNT(c_id)as NN FROM scoreGROUP BY s_id)as bON a.s_id=b.s_idINNER join student as cON a.s原创 2020-05-25 11:49:54 · 17855 阅读 · 2 评论 -
8、查询课程编号为“02”的总成绩(不重点
-- 8、查询课程编号为“02”的总成绩(不重点)-- 法一SELECT SUM(s_score) FROM scoreWHERE c_id='02'-- 统计不同课程的总成绩、平均值、人数、SELECT SUM(s_score),AVG(s_score),COUNT(distinct s_id) FROM scoreGROUP BY c_id-- 法二-- 8、查询课程编号为“02”的总成绩(不重点)SELECT SUM(s_score) FROM scoreGROUP BY c_id原创 2020-05-25 11:25:18 · 2549 阅读 · 0 评论 -
7、查询学过编号为“01”的课程并且也学过编号为“02”的课程的学生的学号、姓名(重点)
-- 7、查询学过编号为“01”的课程并且也学过编号为“02”的课程的学生的学号、姓名(重点)-- 法一错误SELECT a.c_id,b.s_id,b.s_name FROM score as aINNER JOINstudent as b ON a.s_id=b.s_idWHERE a.c_id='01' and a.c_id='02'--法二SELECT s_id,s_name FROM studentWHERE s_id in ( SELECT a.s_id FROM(SEL原创 2020-05-25 11:15:06 · 7021 阅读 · 1 评论 -
6、查询学过“张三”老师所教的所有课的同学的学号、姓名(重点)
-- 6、查询学过“张三”老师所教的所有课的同学的学号、姓名(重点)SELECT d.s_id,d.s_name,a.t_name,c.c_idFROMteacher as aINNER JOIN course as b ON a.t_id=b.t_idINNER JOIN score as c ON b.c_id=c.c_idINNER JOIN student as d ON c.s_id=d.s_idWHERE a.t_name='张三'ORDER BY d.s_id..原创 2020-05-25 10:50:22 · 6808 阅读 · 5 评论 -
5、查询没学过“张三”老师课的学生的学号、姓名(重点)
-- 5、查询没学过“张三”老师课的学生的学号、姓名(重点)SELECT s_id,s_name FROM studentWHERE s_id NOT IN (SELECT s_id FROM scoreWHERE c_id=( SELECT c_id FROM courseWHERE t_id=(SELECT t_id FROM teacherWHERE t_name='张三')))```![在这里插入图片描述](https://img-blog.csdnimg.cn/202原创 2020-05-25 10:27:26 · 6426 阅读 · 0 评论 -
4、查询姓“猴”的老师的个数
-- 4、查询姓“猴”的老师的个数SELECT COUNT(t_id)FROM teacher WHERE t_name like '张%'-- '%张%'含义是只要名字中有张这个字就可以,而'张%'含义是首字为张原创 2020-03-27 12:16:44 · 581 阅读 · 0 评论 -
3、查询所有学生的学号、姓名、选课数、总成绩
-- 3、查询所有学生的学号、姓名、选课数、总成绩(不重要)SELECT b.s_id,b.s_name,COUNT(a.c_id),-- 一般SELECT中出现的是group by中出现的或者是统计值SUM(case WHEN a.s_score is NULL then 0 else a.s_score END)FROM score as aRIGHT JOIN student ...原创 2020-03-24 12:52:26 · 40772 阅读 · 1 评论 -
2、查询平均成绩大于60分的学生的学号和平均成绩(简单,第二道重点
-- 2、查询平均成绩大于60分的学生的学号和平均成绩(简单,第二道重点)SELECT s_id,AVG(s_score)FROM score GROUP BY s_id HAVING AVG(s_score)>60原创 2020-03-24 12:25:41 · 19686 阅读 · 1 评论 -
1.查询课程编号为“01”的课程比“02”的课程成绩高的所有学生的学号(重点)
-- 1.查询课程编号为“01”的课程比“02”的课程成绩高的所有学生的学号(重点)SELECT a.s_id'id',a.s_score'01', b.s_score'02' ,c.s_name FROM(SELECT s_id,c_id,s_score FROM score WHERE c_id='01')as aINNER JOIN(SELECT s_id,c_id,s_sc...原创 2020-03-24 12:15:59 · 17117 阅读 · 0 评论