我有两张桌子
<img src="http://...
我需要总结每个区域每名学生的平均公斤数。
对于区域1应该达到(120 + 80 + 20 + 200 + 150 + 14)/(2 + 28 + 22)= 11.23 但我无法弄清楚如何编写该查询。我想我必须使用某种子查询来首先在第1区(52)中总结出学生,然后我总结公斤并分配给学生?
答案 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