Kumulative Summe über Zeilen in MySQL
Um die kumulative Summe für jede ID, gruppiert nach Tagesstunde, zu ermitteln, wird ein gemeinsamer Ansatz verwendet in MySQL. Aufgrund des Fehlens von Analysefunktionen in früheren Versionen von MySQL werden zwei Hauptmethoden verwendet: eine korrelierte Unterabfrage oder MySQL-Benutzervariablen.
Ansatz mit korrelierten Unterabfragen
Diese Strategie beinhaltet eine Unterabfrage, die die kumulative Summe für jede Zeile basierend auf Übereinstimmungskriterien berechnet. Bei umfangreichen Datensätzen kann es jedoch ressourcenintensiv sein.
Ansatz mit Benutzervariablen
Eine effizientere Methode umfasst MySQL-Benutzervariablen und eine umschlossene Abfrage mit einer ORDER BY-Klausel um die Reihenfolge der Zeilenverarbeitung sicherzustellen. Die folgenden Schritte beschreiben diesen Ansatz:
Ein Beispiel für diesen Ansatz:
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 ( // Original query with multiple joins and unions ) a LEFT JOIN ( // Unions on multiple tables ) b ON a.id = b.id ORDER BY 1, 2, 3 ) c
Dieser Ansatz ermöglicht eine effiziente Berechnung kumulativer Summen in MySQL-Versionen vor 8.0, wenn Fensterfunktionen wurden eingeführt.
Das obige ist der detaillierte Inhalt vonWie kann ich kumulative Summen in MySQL effizient berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!