SQL - 返回所有行,但非唯一行合并为一个(算术执行)?

Qua*_*Oat 2 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
Run Code Online (Sandbox Code Playgroud)

我可以使用什么查询来返回所需的结果集?

非常感谢所有帮助!

Red*_*ter 5

我认为应该这样做:

select B, C, D, sum(E*F) / sum(F), sum(F), sum(G), sum(H), sum(I)
from MyTable
group by B, C, D
Run Code Online (Sandbox Code Playgroud)