Heim > Datenbank > MySQL-Tutorial > Wie aggregiere ich SUM-Werte über mehrere Datenbanktabellen hinweg korrekt?

Wie aggregiere ich SUM-Werte über mehrere Datenbanktabellen hinweg korrekt?

Susan Sarandon
Freigeben: 2024-12-29 05:45:11
Original
958 Leute haben es durchsucht

How to Correctly Aggregate SUM Values Across Multiple Database Tables?

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
Nach dem Login kopieren

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]
Nach dem Login kopieren

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]
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage