随笔分类 -  Sql练习题

摘要:查询每门课程被选修的学生数 SELECT cid,COUNT(cid) 选修人数 from sc GROUP BY cid 阅读全文
posted @ 2021-08-20 15:21 弩哥++ 阅读(27) 评论(0) 推荐(0) 编辑
摘要:查询各科成绩前三名的记录 select a.sid,a.cid,a.score from sc a left join sc b on a.cid = b.cid and a.score<b.score group by a.cid, a.sid,a.score having count(*)<3 阅读全文
posted @ 2021-08-20 15:18 弩哥++ 阅读(34) 评论(0) 推荐(0) 编辑
摘要:统计各科成绩各分数段人数:课程编号,课程名称,[100-85],[85-70],[70-60],[60-0] SELECT Course.CId,Course.Cname ,t.[0-60],t.[60-70],t.[70-85],t.[85-100] from Course, ( SELECT c 阅读全文
posted @ 2021-08-20 15:02 弩哥++ 阅读(52) 评论(0) 推荐(0) 编辑
摘要:按各科成绩进行排序,并显示排名, Score 重复时保留名次空缺 SELECT t.cid,t.sid,t.score ,COUNT(t1.score)+1 as 排名 from sc as t LEFT JOIN SC as t1 ON t.cid = t1.CId AND t.score < t 阅读全文
posted @ 2021-08-20 14:12 弩哥++ 阅读(39) 评论(0) 推荐(0) 编辑
摘要:查询各科成绩最高分、最低分和平均分: 以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率 , 及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90, SELECT Course.CId,Course.cname,t.最高分,t.最低 阅读全文
posted @ 2021-08-19 20:26 弩哥++ 阅读(85) 评论(0) 推荐(0) 编辑
摘要:按平均成绩从高到低显示所有学生的所有课程的成绩以及平均成绩 SELECT * from SC LEFT JOIN (SELECT sid,AVG(score) 平均成绩 from SC GROUP BY SId ) t ON SC.SId = t.sid ORDER BY 平均成绩 DESC 阅读全文
posted @ 2021-08-19 18:57 弩哥++ 阅读(23) 评论(0) 推荐(0) 编辑
摘要:检索" 01 "课程分数小于 60,按分数降序排列的学生信息 SELECT Student.* ,SC.score from Student,SC WHERE sc.cid = '01' AND SC.score < 60 AND Student.SId = sc.sid ORDER BY scor 阅读全文
posted @ 2021-08-19 18:20 弩哥++ 阅读(17) 评论(0) 推荐(0) 编辑
摘要:查询两门及其以上不及格课程的同学的学号,姓名及其平均成绩 SELECT Student.SId,Student.Sname,t.不及格课程数,t.平均成绩 from Student, (SELECT SId, COUNT(CId) 不及格课程数,AVG(score) 平均成绩 FROM SC WHE 阅读全文
posted @ 2021-08-19 18:02 弩哥++ 阅读(42) 评论(0) 推荐(0) 编辑
摘要:查询没学过"张三"老师讲授的任一门课程的学生姓名 SELECT * from Student WHERE SId not in ( SELECT SC.SId from Teacher,Course,SC WHERE Teacher.TId = Course.TId AND Course.CId = 阅读全文
posted @ 2021-08-18 19:48 弩哥++ 阅读(31) 评论(0) 推荐(0) 编辑
摘要:查询和" 01 "号的同学学习的课程 完全相同的其他同学的信息 分析 如果某同学学的某一个课程和01同学所学的课程有对应,那么子查询返回false。 如果没有对应,子查询返回true。 子查询完毕后,如果子查询为空,说明每一个课程都有对应,那么主查询not exists为true,返回一条记录; 如 阅读全文
posted @ 2021-08-18 19:35 弩哥++ 阅读(48) 评论(0) 推荐(0) 编辑
摘要:查询至少有一门课与学号为" 01 "的同学所学相同的同学的信息 SELECT * from Student WHERE SId in (SELECT SId from sc WHERE cid in (SELECT cid from sc WHERE sid='01')) 阅读全文
posted @ 2021-08-18 18:21 弩哥++ 阅读(25) 评论(0) 推荐(0) 编辑
摘要:查询没有学全所有课程的同学的信息 分析 先查询出所有课程的数量 select count(cid) from course 再查询出成绩表中课程数量=总课数的人员 select sid from sc group by sid having count(cid)= (select count(cid 阅读全文
posted @ 2021-08-18 18:01 弩哥++ 阅读(30) 评论(0) 推荐(0) 编辑
摘要:查询学过「张三」老师授课的同学的信息 SELECT Student.* from Student,Teacher,Course,SC WHERE Teacher.TId = Course.TId AND Student.SId = SC.SId AND Course.CId = SC.CId AND 阅读全文
posted @ 2021-08-18 17:45 弩哥++ 阅读(28) 评论(0) 推荐(0) 编辑
摘要:查询「李」姓老师的数量 SELECT Tname,COUNT(Tname)数量 from Teacher GROUP BY tname HAVING Tname LIKE '李%' 阅读全文
posted @ 2021-08-18 17:32 弩哥++ 阅读(30) 评论(0) 推荐(0) 编辑
摘要:查询所有同学的学生编号、学生姓名、选课总数、所有课程的总成绩(没成绩的显示为 null ) SELECT Student.SId,sname,t.选课总数,t.总成绩 from Student LEFT JOIN (SELECT sid,COUNT(cid) 选课总数 ,SUM(score) 总成绩 阅读全文
posted @ 2021-08-18 17:23 弩哥++ 阅读(43) 评论(0) 推荐(0) 编辑
摘要:查询在 SC 表存在成绩的学生信息 SELECT * from Student WHERE SId in (SELECT SId from SC) 阅读全文
posted @ 2021-08-18 17:14 弩哥++ 阅读(23) 评论(0) 推荐(0) 编辑
摘要:查询平均成绩大于等于 60 分的同学的学生编号和学生姓名和平均成绩 SELECT Student.SId,Sname,t.[平均成绩] from Student , (SELECT sid , AVG(score) 平均成绩 from sc GROUP BY sid HAVING AVG(score 阅读全文
posted @ 2021-08-18 17:08 弩哥++ 阅读(30) 评论(0) 推荐(0) 编辑
摘要:查询不存在" 01 "课程但存在" 02 "课程的情况 SELECT * from sc WHERE cid = '02' AND sid not in (SELECT sid from sc WHERE cid = '01') 阅读全文
posted @ 2021-08-18 16:44 弩哥++ 阅读(38) 评论(0) 推荐(0) 编辑
摘要:查询存在" 01 "课程,可能不存在" 02 "课程的情况(不存在时显示为 null ) SELECT * FROM (SELECT * FROM SC WHERE CID = '01') AS T1 LEFT JOIN (SELECT * FROM SC WHERE CID='02') AS T2 阅读全文
posted @ 2021-08-18 16:36 弩哥++ 阅读(44) 评论(0) 推荐(0) 编辑
摘要:查询同时存在" 01 "课程和" 02 "课程的情况 分析:分别先查询出包含有01课程和02课程 SELECT * from sc WHERE cid='01' SELECT * from sc WHERE cid='02' 最终代码 SELECT SId, sname ,sage FROM Stu 阅读全文
posted @ 2021-08-18 15:08 弩哥++ 阅读(46) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示