SQL-返回所有行,但是非唯一行合并为一执行算术运算?

问题描述

| 我有一张表,其中B,C和D列可以视为标识符,而E-I列是值。根据标识符,会有一些行是不唯一的,即B,C和D的值与其他行的值匹配(可能不止一个行匹配)。 我想要一个返回所有行的查询,除了那些非唯一行。在这些情况下,我只希望返回一行,其值加起来,但E列除外。这应该是相对于F列的加权平均值,即对于每个匹配的行,返回的值应该是E的总和* F / F的总和 例如
E,F  
7,1  
9,4  
E = (7*1 + 9*4)/(1+4) = 8.6
我可以使用哪种查询来返回所需的结果集? 非常感谢所有帮助!     

解决方法

我认为应该这样做:
select B,C,D,sum(E*F) / sum(F),sum(F),sum(G),sum(H),sum(I)
from MyTable
group by B,D
    ,
SELECT B,SUM(E * F) / SUM(F) AS E_WEIGHTED,SUM(F) AS F_SUM,SUM(G) AS G_SUM,SUM(H) AS H_SUM,SUM(I) AS I_SUM
  FROM TableX
GROUP BY B,D
通常,GROUP BY子句将合并共享重复值的行(您在GROUP BY子句中命名的列)。     ,
SELECT B,SUM(E*F)/SUM(F),SUM(F),SUM(G),SUM(H),SUM(I)
FROM my_table
GROUP BY B,D;
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...