SQL查询以获取两个表中的每组平均值

时间:2014-02-25 06:09:38

标签: mysql sql group-by intersect

我有两张桌子:学生和结果。

对于学生,字段为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()在这里没有给出正确答案。

2 个答案:

答案 0 :(得分:1)

应该像将两张桌子连在一起一样简单,按等级分组并选择所有分数的平均值。

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

答案 1 :(得分: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