Heim >Datenbank >MySQL-Tutorial >Wie berechnet man die kumulative Summe in MySQL ohne Analysefunktionen?

Wie berechnet man die kumulative Summe in MySQL ohne Analysefunktionen?

Barbara Streisand
Barbara StreisandOriginal
2025-01-03 15:51:43750Durchsuche

How to Calculate Cumulative Sum in MySQL Without Analytic Functions?

Kumulative Summenberechnung für eine Reihe von Zeilen in MySQL

Problemstellung:

Bestimmen die kumulative Summe für jede ID über alle Stunden des Tages aus einem Abfrageergebnissatz, der Spalten für ID, Tag, Stunde und enthält Menge.

Antwort:

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
              , @subtotal := 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

Zusätzliche Hinweise:

  • MySQL-Versionen vor 8.0 verfügen nicht über Analysefunktionen Funktionen zur kumulativen Summenberechnung.
  • Die bereitgestellte Lösung nutzt MySQL-Benutzervariablen und die Verarbeitung von Kontrollunterbrechungen Analysefunktionalität emulieren.
  • Die Abfrage wurde geändert, um Zeilen nach ID, Tag und Stunde zu sortieren, um eine korrekte kumulative Summenberechnung zu ermöglichen.
  • Die berechnete kumulative Gesamtsummenspalte wird als erste Spalte in zurückgegeben Ergebnissatz.

Das obige ist der detaillierte Inhalt vonWie berechnet man die kumulative Summe in MySQL ohne Analysefunktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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