2016-01-30 39 views
-1
student(sid, sname, sex, age, year, gpa) 
dept(dname, numphds) 
prof(pname, dname) 
course(cno, cname, dname) 
major(dname, sid) 
section(dname, cno, sectno, pname) 
enroll(sid, grade, dname, cno, sectno) 

select e.cno, e.sectno, avg(s.gpa) 
from enroll e, student s 
where dname = 'Computer Science' and s.sid = e.sid 
group by dname, cno, sectno 

結果被錄取對於同一班級的每個單獨部分(sectno),但不知道如何獲得兩節課每班的平均目標(相同的cno),分兩行顯示?SQL HELP〜對於每個計算機科學類,打印CNO,sectno,學生的平均GPA在類

謝謝〜

我想要的結果是

任何幫助,將不勝感激〜

+0

是啊:)你能幫我嗎? – Echo0831

+0

我已經完成了你所說的,但得到了同樣的結果。我錯了嗎?請選擇e.cno,e.sectno,avg(s.gpa) from e e \t將學生加入s.sid = e.sid where dname ='Computer Science' group by cno,sectno; – Echo0831

回答

0

嘗試要麼

select tmp.course_number, sect.sectno as section_number, tmp.avg_gpa 
from (
    select e.cno as course_number, avg(s.gpa) as avg_gpa 
    from enroll e 
    join student s on s.sid = e.sid 
    where dname = 'Computer Science' 
    group by dname, cno 
) as tmp 
join section sect on sect.cno = tmp.course_number 
where sect.dname = 'Computer Science' 

或只是sectno從原始組中刪除條款,看看你給了什麼。

+0

你的解決方案很棒〜但是當我刪除sectno時,它會拋出一個錯誤:列「e.sectno」必須出現在GROUP BY子句中或用於聚合函數 – Echo0831

+0

如果是這種情況,那麼你將不得不嵌套它無論如何與選擇的東西。* from(你的查詢在這裏)作爲東西組由dname,cno;所以我的第一個問題和第二個問題確實沒什麼區別。很高興第一個爲你工作:)請注意,第二種方法只能用於MySQL,因爲它具有不同於其他RDMS處理組的方式。 –