首頁 >資料庫 >mysql教程 >為什麼合併多個表時我的 SQL 求和計算不正確?

為什麼合併多個表時我的 SQL 求和計算不正確?

Patricia Arquette
Patricia Arquette原創
2024-12-28 19:18:11615瀏覽

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」值。
  • 然後主查詢連接這些基於匹配的「PROJE CT」值的子查詢,並再次聚合結果以產生最終表。

此修改後的查詢確保僅對不同的「PROJECT」值進行分組,並且總和計算正確,提供了預期的結果。

以上是為什麼合併多個表時我的 SQL 求和計算不正確?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn