数据库结构下载:course
1、检索成绩比学生张三平均分高的所有学生及课程信息。
SELECT class_name, student.student_no, student_name, course_name, score FROM classes JOIN student ON student.class_no = classes.class_no JOIN choose ON choose.student_no = student.student_no JOIN course ON choose.course_no = course.course_no WHERE score > ( SELECT AVG(score) FROM student, choose WHERE student.student_no = choose.student_no AND student_name = '张三' )
2、检索平均成绩比学生张三平均分高的所有学生及课程信息
SELECT class_name, student.student_no, student_name, course_name , AVG(score) FROM classes JOIN student ON student.class_no = classes.class_no JOIN choose ON choose.student_no = student.student_no JOIN course ON choose.course_no = course.course_no GROUP BY student.student_no HAVING AVG(score) > ( SELECT AVG(score) FROM choose JOIN student ON student.student_no = choose.student_no WHERE student_name = '张三' )
3、检索没有申请选修课的教师信息
SELECT * FROM teacher WHERE teacher_no NOT IN ( SELECT teacher.teacher_no FROM course WHERE course.teacher_no = teacher.teacher_no );
4、检索尚未被任何学生选修的课程信息
SELECT * FROM course WHERE NOT EXISTS ( SELECT * FROM choose WHERE course.course_no = choose.course_no )
5、检索“2018 自动化2班”比“2018 自动化1班”最低分高的学生信息
SELECT student.student_no, student_name, class_name FROM student JOIN classes ON student.class_no = classes.class_no JOIN choose ON choose.student_no = student.student_no WHERE class_name = '2018 自动化2班' AND score > ANY ( SELECT score FROM choose JOIN student ON student.student_no = choose.student_no JOIN classes ON classes.class_no = student.class_no WHERE class_name = '2018 自动化1班' )
6、检索“2018 自动化2班”比“2018 自动化1班”最高分高的学生信息
SELECT student.student_no, student_name, class_name FROM student JOIN classes ON student.class_no = classes.class_no JOIN choose ON choose.student_no = student.student_no WHERE class_name = '2018 自动化2班' AND score > ALL ( SELECT score FROM choose JOIN student ON student.student_no = choose.student_no JOIN classes ON classes.class_no = student.class_no WHERE class_name = '2018 自动化1班' )
7、统计选修人数少于30人的所有课程信息
SELECT course.course_no, course_name, teacher_name, teacher_contact , COUNT(*) AS student_num FROM choose JOIN course ON choose.course_no = course.course_no JOIN teacher ON teacher.teacher_no = course.teacher_no GROUP BY course_no HAVING COUNT(*) < 30 UNION ALL SELECT course.course_no, course_name, teacher_name, teacher_contact, 0 FROM course JOIN teacher ON teacher.teacher_no = course.teacher_no WHERE NOT EXISTS ( SELECT * FROM choose WHERE course.course_no = choose.course_no );
8、统计每一门课程已经有多少学生选修,还能供多少学生选修
SELECT course.course_no, course_name, teacher_name, up_limit , COUNT(*) AS student_num , up_limit - COUNT(*) AS available FROM choose JOIN course ON choose.course_no = course.course_no JOIN teacher ON teacher.teacher_no = course.teacher_no GROUP BY course_no UNION ALL SELECT course.course_no, course_name, teacher_name, up_limit, 0 , up_limit FROM course JOIN teacher ON teacher.teacher_no = course.teacher_no WHERE NOT EXISTS ( SELECT * FROM choose WHERE course.course_no = choose.course_no )