MySQL中的加权平均值计算?

Leg*_*end 11 mysql database query-optimization

我目前正在使用以下查询来获取一些数字:

SELECT gid, count(gid), (SELECT cou FROM size WHERE gid = infor.gid)       
FROM infor 
WHERE id==4325 
GROUP BY gid;
Run Code Online (Sandbox Code Playgroud)

我目前阶段得到的输出如下:

+----------+-----------------+---------------------------------------------------------------+
| gid      | count(gid)      | (SELECT gid FROM size WHERE gid=infor.gid)                    |
+----------+-----------------+---------------------------------------------------------------+
|       19 |               1 |                                                            19 | 
|       27 |               4 |                                                            27 | 
|      556 |               1 |                                                           556 | 
+----------+-----------------+---------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

我试图计算加权平均值即

(1*19 + 4*27 + 1*556)/(19 + 27 + 556)

有没有办法使用单个查询执行此操作?

OMG*_*ies 14

使用:

SELECT SUM(x.num * x.gid) / SUM(x.cou)
  FROM (SELECT i.gid,
               COUNT(i.gid) AS num,
               s.cou
          FROM infor i
     LEFT JOIN SIZE s ON s.gid = i.gid
         WHERE i.id = 4325
      GROUP BY i.gid) x
Run Code Online (Sandbox Code Playgroud)