首页 > 数据库 > mysql教程 > 为什么合并多个表时我的 SQL 求和计算不正确?如何使用子查询修复这些问题?

为什么合并多个表时我的 SQL 求和计算不正确?如何使用子查询修复这些问题?

Patricia Arquette
发布: 2024-12-28 19:18:11
原创
564 人浏览过

Why are my SQL sum calculations incorrect when combining multiple tables, and how can I fix them using subqueries?

组合多个表中的数据进行求和:解决不正确的结果

在 SQL 查询中,您的目标是检索由三列组成的表:“PROJECT”、“SUM_AP”和“SUM_INV”。但是,由于聚合过程中的分组,您遇到了不正确的结果。

错误结果的原因:

查询中的“GROUP BY”子句根据值组合在“AP.[项目]”列中。此聚合过程本质上是对重复的“值”条目进行求和,从而导致结果膨胀。

解决方案:使用子选择查询

要解决此问题,我们可以修改使用子选择的查询查询:

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]
登录后复制

解释:

  • SUM() 函数中的子查询计算“AP”中“Value”条目的总和”和“INV”表,分别对应每个唯一的“PROJECT”值。
  • 然后主查询连接这些基于匹配的“PROJECT”值的子查询,并再次聚合结果以生成最终表。

此修改后的查询确保仅对不同的“PROJECT”值进行分组,并且总和计算正确,提供了预期的结果。

以上是为什么合并多个表时我的 SQL 求和计算不正确?如何使用子查询修复这些问题?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板