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經典問題四表查詢(教師,學生,成績,課程表),不過其中有些需要優化。

本文完整代碼在https://github.com/Ivyvivid/interview/tree/master/MySQL%E7%AF%87/%E5%AD%A6%E7%94%9F%E8%A1%A8%E3%80%81%E6%88%90%E7%BB%A9%E8%A1%A8%E3%80%81%E8%AF%BE%E7%A8%8B%E8%A1%A8%E3%80%81%E8%80%81%E5%B8%88%E8%A1%A8%E6%9F%A5%E8%AF%A2


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM