2016-10-07 49 views
0

說我有一個叫學生使用AVG(),並加入MySQL的

idStudent Name 

1   Billy 
2   Mariah 
3   Chris 
4   Mark 
5   Sarah 

表和另一個表稱爲測試

idTest score student_idstudent 

1  50  1 
2  100  1 
3  90  2 
4  100  3 
5  45  4 

是有可能使用的加入,平均組合()得到的結果一樣

idStudent  avg_test 
1    75 
2    90 
3    100 
4    45 
5    0 

回答

1
SELECT s.idStudent, 
     AVG(COALESCE(t.score, 0)) AS avg_test 
FROM students s 
LEFT JOIN tests t 
    ON s.idStudent = t.student_idStudent 
GROUP BY s.idStudent 
+0

謝謝你,但一個問題。是否可以顯示平均值乘以每個學生的實際測試次數?因此,例如學生1(比利)它會顯示75 * 2 = 150.我知道在這種情況下,它並沒有什麼意義,但我試圖按給定的分數進行加權平均。 – user2827048

+0

當然,只需使用'COUNT(*)* AVG(COALESCE(t.score,0))' –