Heim >Datenbank >MySQL-Tutorial >Wie aggregiere ich SUM-Werte über mehrere Datenbanktabellen hinweg korrekt?
Datenbankaggregation über mehrere Tabellen hinweg: Summenberechnungen korrigieren
Beim Umgang mit mehreren Tabellen in einer Datenbank erfordern Aggregationsfunktionen wie SUM eine sorgfältige Handhabung sorgen für genaue Ergebnisse. Dies wird durch eine Abfrage veranschaulicht, die versucht, die Summe der Werte aus zwei Tabellen, AP und INV, zu berechnen, die beide die Spalten [PROJEKT] und [Wert] haben. Die gewünschte Ausgabe sollte wie folgt aussehen:
PROJECT | SUM_AP | SUM_INV
Die bereitgestellte Abfrage ergab jedoch aufgrund eines Summationsfehlers falsche Ergebnisse:
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]
Das Problem liegt in der Gruppierung der Werte. Die GROUP BY-Klausel kombiniert doppelte Werte, was zu falschen Summen führt.
Um dies zu korrigieren, können Unterauswahlen verwendet werden:
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]
Dieser Ansatz berechnet die Summen separat für jedes [PROJEKT ] unter Verwendung von Unterauswahlen, was zu einer genauen Aggregation führt.
Das obige ist der detaillierte Inhalt vonWie aggregiere ich SUM-Werte über mehrere Datenbanktabellen hinweg korrekt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!