Heim >Datenbank >MySQL-Tutorial >Wie berechnet man die kumulative Summe in MySQL, ohne analytische Funktionen zu verwenden?
Kumulative Summe in MySQL ohne SET
In MySQL stellt das Fehlen von Analysefunktionen wie der kumulativen Summe eine Herausforderung dar, wenn Sie versuchen, laufende Summen zu berechnen . Es gibt jedoch zwei Ansätze, diese Funktionalität zu emulieren.
Korrelierte Unterabfragen
Dieser Ansatz verwendet eine Unterabfrage innerhalb der Hauptabfrage, um die kumulative Summe zu erhalten. Es kann jedoch ressourcenintensiv und komplex sein, insbesondere wenn es um komplizierte Verknüpfungen geht.
Benutzervariablen
Alternativ können die Benutzervariablen von MySQL genutzt werden, um eine Kontrollunterbrechung durchzuführen Verarbeitung. Bei dieser Methode werden die Ergebnisse der ursprünglichen Abfrage sortiert und in eine äußere Abfrage eingeschlossen.
In der äußeren Abfrage:
Die folgende Logik lautet angewendet:
Die Benutzervariablen werden mit den aktuellen ID- und Tageswerten nach dem aktualisiert Berechnung.
Beispielabfrage
SELECT IF(@prev_id = c.id AND @prev_day = c.day, @cumtotal := @cumtotal + c.amount, @cumtotal := c.amount) AS cumulative_total, @prev_id := c.id AS `id`, @prev_day := c.day AS `day`, c.hr, c.amount AS `amount` FROM ( SELECT @prev_id := NULL, @prev_day := NULL, @cumtotal := 0 ) i JOIN ( select id, day, hr, amount from ( //multiple joins on multiple tables)a left join (//unions on multiple tables)b on a.id=b.id ORDER BY 1,2,3 ) c
Wenn die Spaltenreihenfolge geändert werden muss:
SELECT d.id, d.day, d.hr, d.amount, d.cumulative_total FROM ( // query from above ) d
Dieser Ansatz ist für Versionen von MySQL geeignet vor 8.0 und kann eine effiziente Lösung zum Berechnen kumulativer Summen über eine Reihe von Zeilen bieten.
Das obige ist der detaillierte Inhalt vonWie berechnet man die kumulative Summe in MySQL, ohne analytische Funktionen zu verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!