SQl - 查找每人平均金额

时间:2017-03-22 10:55:58

标签: mysql sql

我有两张桌子

<img src="http://...

我需要总结每个区域每名学生的平均公斤数。

对于区域1应该达到(120 + 80 + 20 + 200 + 150 + 14)/(2 + 28 + 22)= 11.23 但我无法弄清楚如何编写该查询。我想我必须使用某种子查询来首先在第1区(52)中总结出学生,然后我总结公斤并分配给学生?

3 个答案:

答案 0 :(得分:3)

这有点棘手,因为学生应该与课程分开计算:

select c.area, sum(d.kg) / max(area_students) as avg_kg_per_student
from class c join
     deliveries d
     on d.classid = c.id join
     (select c2.area, sum(students) as area_students
      from class c2
      group by c2.area
     ) c2
     on c2.area = c.area
group by c.area;

答案 1 :(得分:1)

我认为你不能使用平均值,因为你需要自己确定分母:

SELECT sum(kg)/ studSum AS avg 
FROM _class LEFT JOIN _deliveries ON _class.id=_deliveries.classid 
            left join (select area, sum(students) as studSum from _class group by area) subT 
            ON subT.area=_class.area
GROUP BY _class.area;

答案 2 :(得分:0)

这是一种非常易读的方法:每个区域获得学生,每个区域获得公斤,然后加入两个。

weighted.mean