50個のSQL文(MySQL版)問題17
3096 ワード
----------------------------------------------------------------------------------------
student(StuId,StuName,StuAge,StuSex)学生表
teacher(TId,Tname)教師表
course(CId,Cname,C_TId)カリキュラム
sc(SId,S_CId,Score)成績表
----------------------------------------------------------
問題17:平均成績によって高いから低いまですべての学生の“データベース”、“企業管理”、“英語”の3つの課程の成績を表示して、以下の形式によって表示します:学生ID、データベース、企業管理、英語、有効な課程数、有効な平均点
答えはただ参考にして、必ずしも完全に正しいとは限らなくて、もし间违いを発见してあるいはもっと良いことがあるならば、评论を歓迎して、互いに交流して、いっしょに成长します!!!
student(StuId,StuName,StuAge,StuSex)学生表
teacher(TId,Tname)教師表
course(CId,Cname,C_TId)カリキュラム
sc(SId,S_CId,Score)成績表
----------------------------------------------------------
問題17:平均成績によって高いから低いまですべての学生の“データベース”、“企業管理”、“英語”の3つの課程の成績を表示して、以下の形式によって表示します:学生ID、データベース、企業管理、英語、有効な課程数、有効な平均点
SELECT s.StuId,
SUM(CASE WHEN sc.S_CId=(SELECT CId FROM course WHERE Cname=" ") THEN sc.Score ELSE 0 END) DB,
SUM(CASE WHEN sc.S_CId=(SELECT CId FROM course WHERE Cname=" ") THEN sc.Score ELSE 0 END) BM,
SUM(CASE WHEN sc.S_CId=(SELECT CId FROM course WHERE Cname=" ") THEN sc.Score ELSE 0 END) En,
COUNT(sc.S_CId) Num,
AVG(sc.Score) AvgScore
FROM student s,sc
WHERE s.StuId=sc.SId
GROUP BY s.StuId
ORDER BY AvgScore desc;
答えはただ参考にして、必ずしも完全に正しいとは限らなくて、もし间违いを発见してあるいはもっと良いことがあるならば、评论を歓迎して、互いに交流して、いっしょに成长します!!!