首頁 > 資料庫 > mysql教程 > 如何使用子查詢正確聚合 SQL 中多個資料表的資料?

如何使用子查詢正確聚合 SQL 中多個資料表的資料?

Linda Hamilton
發布: 2025-01-01 13:44:11
原創
183 人瀏覽過

How to Correctly Aggregate Data from Multiple Tables in SQL Using Subqueries?

SQL 查詢聚合多個表中的資料

在SQL 中,可以使用各種技術來聚合多個表中的資料。以下是組合兩個表中的資料的查詢的場景和解決方案:

場景:

考慮兩個表,AP 和INV,都包含列[ PROJECT]和[值]。目標是檢索計算兩個表格中每個項目的 [Value] 總和的結果,結果格式如下:

PROJECT | SUM_AP | SUM_INV
---------+--------+--------
XXXXX   | 500    | 800
登入後複製

錯誤查詢:

嘗試了以下查詢,但結果不準確sums:

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]
登入後複製

錯誤結果的原因:

錯誤的查詢在應用總和之前對值進行分組,導致重複的項目值包含在總和中。

正確解:

解決為此,可以使用涉及子選擇的查詢:

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板