2014-02-25 38 views
2

我有兩個表格:學生和結果。SQL查詢以獲得兩個表中的每個組的平均值

對於學生來說,這些字段是student_id, name, grade
對於結果,這些字段是student_id, score

等級就像是學前班,一,二,三....像一所學校。

正如你看到的,student_id在兩個表中。

我想我試圖通過組左加入,但沒有工作的SQL查詢,返回每個年級平均分,像

Pre-School => 50 
Kindergarten => 26 

我一直工作在查詢如下:

SELECT 
    cat.grade, 
    dog.score 
FROM (SELECT * FROM students GROUP BY grade) AS cat, results AS dog 
GROUP BY cat.grade 

但這只是給了我每級一個結果,所以AVG()沒有在這裏得到正確的答案。

+0

你想爲每個學生或所有學生獲得每年級的avarege分數嗎? –

+0

'SELECT AVG(score)FROM JOIN b GROUP BY grade' – Mihai

回答

1

它應該像加入兩張表一樣簡單,分級和選擇所有分數的平均值。

SELECT grade, 
     Avg(score) 
FROM students 
     JOIN results using (student_id) 
GROUP BY grade 
+0

沒問題,歡迎來到StackOverflow。記住投票你認爲正確的任何答案,並接受最好的答案你的問題的答案。 –

+0

非常感謝。我接受了你的答案。由於我的聲望不低於15,我無法贊成。謝謝。 –

0
select id, avg(salary) avg_salary from Employee join results group by id order by avg(salary) desc; 

    ID     AVG_SALARY 
---- ------------------------ 
07     7897.78 
02     6661.78 
03     6544.78 
06     4322.78 
04     2344.78 
05     2334.78 
01     1234.56 
08     1232.78