圖片依次是Student,StudentClass,Class三張表,題目如圖。想法是查詢到一個學號,再查詢該學號對應的不同課程號和成績,又查詢每個課程號對應的平均分,將平均分回傳對應課程號與學生得分進行比較,判斷是都輸出該學號下該生的該門成績。但每查一個人都要查一次某些課程的平均分好像有些多余。



uj5u.com熱心網友回復:
1.先查出每個課程的平均分
select convert(float, sum(grade))/convert(float,count(grade)) as avgGrae,cno from studentclass group by cno
2.想辦法吧這個結果加到select陳述句中
select s.sno,s.sname,c.cname,sc.grade from student s
inner join
studentclass sc on s.sno=sc.sno
inner join
class c on sc.cno=c.cno --到此為止是獲取所有的資料,然后再連接查出的平均分
inner join
(select convert(float, sum(grade))/convert(float,count(grade)) as avgGrae,cno from #studentclass group by cno) gra
on sc.cno=gra.cno
where convert(float,sc.cno)>gra.avgGrae --通過成績列比平均分列大,來過濾資料
uj5u.com熱心網友回復:
最后where寫錯了,where convert(float,sc.grade)>gra.avgGrae
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/122533.html
標籤:疑難問題
上一篇:哪位大神幫忙看看哪里錯了
下一篇:小白,不知如何解決
