2014-10-10 37 views
1

有人能指導我的學生的平均GPA如何找出以下幾點:MySQL的幫助 - 打印CNO,sectno,就讀於計算機科學

的方向是「太打印每個計算機科學類,學校的cno,sectno,以及入讀該班的學生的平均gpa。「

我附上我的表格和我的SELECT。有人可以讓我知道,如果我的SELECT看起來像我正確的方向,如果是這樣,我堅持如何寫我的ON子句。爲了附上這些表格,我是否稱呼學生sid = enroll sid?我只是困惑如何工作?請幫助指導我,感謝..

Student(sid,sname,sex,age,year,qpa) 
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 enroll.dname, enroll.cno, enroll.sectno, student.AVG(gpa) 
FROM enroll 
JOIN 'student' on 
WHERE dname = 'Computer Science' 
+0

你沒有任何條件才能加入的條款。你需要連接這兩個表:'從註冊加入學生註冊。 =學生。 '。 – Andrew 2014-10-10 19:30:38

回答

1

對於加入,你需要指定在其列的表是相關的,並使用AVG一樣,你需要使用GROUP BY子句的集合函數時。

事情是這樣的:

SELECT enroll.dname, enroll.cno, enroll.sectno, AVG(gpa) 
FROM enroll 
JOIN student on student.sid = enroll.sid 
WHERE dname = 'Computer Science' 
GROUP BY dname, cno, sectno 
+0

好吧,我知道enroll.sid與student.sid有關,所以我嘗試連接這些。我寫了下面的代碼'SELECT enroll.dname,enroll.cno,enroll.sectno,AVG(gpa) FROM enroll JOIN'student'on student.sid = enroll.sid WHERE dname ='計算機科學' GROUP BY dname,cno,sectno;' – 2014-10-10 20:09:59

+0

爲什麼我不使用'student.AVG(gpa)'還是它只是工作相同?在我做出你所推薦的調整後,我仍然沒有得到任何回報。 – 2014-10-10 20:12:01

+0

@Mel_G使用'student.AVG(gpa)'是無效的語法,因爲它意味着AVG是學生表中的一列而不是函數。 'AVG(student.gpa)'本來是對的。 – jpw 2014-10-10 20:15:31