思考模仿题:
1.查询所有选课学生的姓名
SELECT TNAME FROM student AS a WHERE EXISTS
( SELECT * FROM sc AS b WHERE a.SNO= b.SNO )
2.查询所有未选课的学生的姓名
SELECT TNAME FROM student AS a WHERE not EXISTS ( SELECT * FROM sc AS b WHERE a.SNO = b.SNO )
3.按学生分类查询其选修课程的平均分,输出学号、姓名和平均成绩
SELECT student.SNO,student.SNAME,AVG(GRADE) FROM student,sc
WHERE student.SNO=sc.SNO
GROUP BY student.SNO,student.SNAME
4.查询所有课程的平均分,输出课程名和平均成绩,并按平均成绩递增
SELECT CNAME,AVG(GRADE) FROM sc,course
WHERE sc.CNO=course.CNO GROUP BY CNAME ORDER BY AVG(GRADE)
5.查询少于10名同学选修的课程名称,授课班号,教师名,选课人数
SELECT sc.CNO,CNAME,TNAME,COUNT(*) FROM sc,course
WHERE sc.CNO=course.CNO GROUP BY sc.CNO,CNAME,TNAME HAVING COUNT(*)<10 ORDER BY sc.CNO
6.按学号显示信息学院,‘通信专业’或‘电子科学专业’的每个学生的每门课程的成绩明细,并统计每个学生的总成绩,平均成绩
SELECT SNO,CNO,GRADE FROM sc
WHERE SUBSTRING(SNO,5,2) IN('22','24') ORDER BY SNO
COMPUTE SUM(GRADE),AVG(GRADE),MAX(GRADE) BY SNO 7.统计每门课的不及格人数,列出课程名和不及格人数
SELECT CNAME ,'不及格分数段' AS fsd ,COUNT(*) AS rs FROM sc, course
WHERE sc.CNO= course.CNO AND GRADE<60 GROUP BY CNAME
思考题
1、在学生管理数据库中,完成以下查询:
(1) 使用嵌套方法查询存在有95分以上成绩的课程CNO (2) 查询成绩比该课程平均成绩低的学生成绩表
(3) 按课程名称统计每一门课程的平均分,输出课程名称和平均分 (4) 按学生姓名统计其选修课程的总学分,输出学生姓名和总学分 (5) 查询同时选修了‘203402’和‘244501’课程的同学名称 (6) 求最高分学生的学号
(7) 查询“线性代数”的所有授课班级的平均成绩,列出课程名和平均成绩 (8) 查询“线性代数”成绩最高的前5名学生的姓名及成绩,结果按成绩降序 (9) 查询学生“20002059”选修课程的总学分数 (10) 对每个同学,查找其获得最高成绩的课程号 (11) 以行的方式按学院统计各分数段的人数 2、完成书后作业的查询。