如何解决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;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。