database - MySQL中的加权平均计算?

标签 database mysql query-optimization

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

SELECT gid, count(gid), (SELECT cou FROM size WHERE gid = infor.gid)       
FROM infor 
WHERE id==4325 
GROUP BY gid;

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

+----------+-----------------+---------------------------------------------------------------+
| gid      | count(gid)      | (SELECT gid FROM size WHERE gid=infor.gid)                    |
+----------+-----------------+---------------------------------------------------------------+
|       19 |               1 |                                                            19 | 
|       27 |               4 |                                                            27 | 
|      556 |               1 |                                                           556 | 
+----------+-----------------+---------------------------------------------------------------+

我正在尝试计算加权平均值,即

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

有没有办法使用单个查询来做到这一点?

最佳答案

用途:

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

关于database - MySQL中的加权平均计算?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3887063/

相关文章:

sql - 如何替换 SQL Server 中特定字符前后的子字符串?

C# OutOfMemory、映射内存文件或临时数据库

sql - sql中十进制值的自定义转换

mysql - 查找尚未接受的 5 个最旧(最早)的请求

php - Foreach 和 while 循环不输出我获取的数据

python - 当需要每一百行时,使用索引比顺序扫描更好,但仅限于显式值列表

sql - 访问每个标识符的最新行的正确方法?

java - 创建多对多关系

sql - PostgreSQL 优化 : running select queries on preselected subset

带有内部连接的mysql更新查询