我不完全确定这个术语是什么,但是当你加入2个表时你有多对多的关系而你想总结其中一个变量时,我相信你可以总结一下价值一遍又一遍。
我想要完成的是防止这种情况发生。如何确保我的sum函数返回正确的数字?
我正在使用PostgreSQL 例如:
Table 1 Table 2
SampleID DummyName SampleID DummyItem
1 John 1 5
1 John 1 4
2 Doe 1 5
3 Jake 2 3
3 Jake 2 3
3 2
如果我将这两个表连接到SampleID上,并且我想为每个DummyName求和DummyItem,那么如何在不进行双重求和的情况下执行此操作?
答案 0 :(得分:1)
解决方案是首先聚合,然后进行连接:
select t1.sampleid, t1.dummyname, t.total_items
from table_1 t1
join (
select t2.sampleid, sum(dummyitem) as total_items
from table_2 t2
group by t2
) t ON t.sampleid = t1.sampleid;
但真正的问题是:为什么table_1
中有重复项?
答案 1 :(得分:0)
我会后退一步,尝试评估数据库设计。具体来说,哪些规则允许这样的重复数据?
要根据您的数据解决您的具体问题,可以选择以下一个选项:创建一个包含表1中唯一行的临时表,然后将临时表与表2连接以获得我认为您期望的总和。