用 SQL 汇总多个表中的数据:解决不正确的结果
在数据分析领域,经常需要组合来自多个表的信息表格以获得全面的了解。一项常见任务是计算这些表中按公共列分组的值的总和。但是,从提供的代码可以明显看出,如果数据处理不当,可能会出现不正确的结果。
提供的初始查询:
SELECT AP.[PROJECT], SUM(AP.Value) AS SUM_AP, SUM(INV.Value) AS SUM_INV FROM AP INNER JOIN INV ON (AP.[PROJECT] =INV.[PROJECT]) WHERE AP.[PROJECT] = 'XXXXX' GROUP BY AP.[PROJECT]
尝试计算两个值的总和表,特定 PROJECT 的 AP 和 INV。但是,问题在于 GROUP BY 子句的使用。按 AP.PROJECT 对结果进行分组会导致总和中包含重复值,从而导致总计不正确。
要纠正此问题,需要使用子查询的更强大方法:
SELECT AP1.[PROJECT], (SELECT SUM(AP2.Value) FROM AP AS AP2 WHERE AP2.PROJECT = AP1.PROJECT) AS SUM_AP, (SELECT SUM(INV2.Value) FROM INV AS INV2 WHERE INV2.PROJECT = AP1.PROJECT) AS SUM_INV FROM AP AS AP1 INNER JOIN INV AS INV1 ON (AP1.[PROJECT] =INV1.[PROJECT]) WHERE AP1.[PROJECT] = 'XXXXX' GROUP BY AP1.[PROJECT]
此增强查询使用子查询来计算每个值的总和单独项目。通过隔离子查询内的计算,我们消除了总和中包含重复值的问题。结果是来自多个表的数据的准确且有意义的摘要,并按所需列进行分组。
以上是如何正确汇总多个SQL表的数据并避免错误结果?的详细内容。更多信息请关注PHP中文网其他相关文章!