如何对不同记录的对应值求和

问题描述 投票:0回答:1

因此,我必须为按 5 列分组的表编写一个查询,并根据分组获取其中一列的总和。 现在,在数据库中我有重复的记录。所以我得到的总和不正确。 那么我如何获取不同记录的总和。

A B C D E F G
400001 101 2024-05-06 失去同步 物料需求计划 20 1460.00
400001 101 2024-05-06 失去同步 物料需求计划 10 1460.00
400002 101 2024-05-06 失去同步 物料需求计划 0 5556.00
400002 101 2024-05-06 失去同步 物料需求计划 10 5556.00
400003 101 2024-05-06 失去同步 物料需求计划 20 1200.00
400003 101 2024-05-06 失去同步 物料需求计划 20 1200.00
select B,C, D, E, F, 
sum(G) as Totals from Table 
where 
B= '101' and C = '2024-05-06'
group  by  B,C, D, E, F

这给出了 5 条记录。虽然记录数是正确的,但是求和结果不正确,因为有很多重复的记录。

所以我尝试了

select distinct A,B,C, D, E, F, 
sum(G) as Totals from Table 
where 
B= 'value' and date = '2024-05-06'
group  by  B,C, D, E, F,A

这是按A列分组,给我88条记录,求和也不正确。

所以我试图获取这 5 条记录以及正确的汇总数据。

数据库使用:postgreSQL

sql postgresql dbeaver database-testing
1个回答
0
投票

如果存在重复项,请首先通过对所有列执行不同操作来过滤掉它们,然后对结果集执行所需的总和。

查询应类似于:

select A, B, C, D, E, F, sum(G) as Totals
from ( select distinct A, B, C, D, E, F, G from Table ) as temp
group by A, B, C, D, E, F;

我在dbfiddle上做了一个小例子,你可以看看。

© www.soinside.com 2019 - 2024. All rights reserved.