因此,我必须为按 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
如果存在重复项,请首先通过对所有列执行不同操作来过滤掉它们,然后对结果集执行所需的总和。
查询应类似于:
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上做了一个小例子,你可以看看。