MySQL实现学生表,成绩表,课程表,老师表复杂查询,用到了join等高级特性

学生表:学号,姓名,出生日期,性别

成绩表:学号,课程号,分数

课程表:课程号,课程名字

老师表:老师号,姓名


# 查询没选课程的学生人数
select count(1) from student s left join score sc on s.sid = sc.sid where sc.cid is null;


#查询选了课程的学生人数
select count(1) from (select s.sid from student s inner join score sc on s.sid = sc.sid group by sc.sid) t;


#查询出每门课程的及格人数和不及格人数
select sc.cid,c.`name`,sum(score >= 60) as 及格人数,sum(score < 60) as 不及格人数 from score sc,course c where sc.cid=c.cid group by sc.cid;

这里,顺便附上一张交集,并集图。这个图完全可以概括所有情况。

更多查询可以参考mysql经典问题四表查询(教师,学生,成绩,课程表),不过其中有些需要优化。

本文完整代码在。

猜你喜欢

转载自www.cnblogs.com/ivy-xu/p/12403983.html
今日推荐