Heim >Datenbank >MySQL-Tutorial >Wie kann man laufende Summen in MySQL effizient berechnen?

Wie kann man laufende Summen in MySQL effizient berechnen?

DDD
DDDOriginal
2025-01-22 06:26:08236Durchsuche

How to Efficiently Calculate Running Totals in MySQL?

Laufende MySQL-Summe: Lösung unter Verwendung von Benutzervariablen

Dieser Artikel mit dem ursprünglichen Titel „Berechnen einer laufenden Summe in MySQL“ soll einer Tabelle eine Spalte hinzufügen, die die kumulative Summe der vorherigen Spaltenwerte anzeigt. Allerdings heißt es in der Antwort, dass die Verwendung von Benutzervariablen in Ausdrücken mittlerweile veraltet ist und in einer zukünftigen Version entfernt wird. Daher bieten wir eine einfachere Lösung an, bei der eine laufende Gesamtvariable initialisiert und eine einzelne Abfrage mithilfe mathematischer Berechnungen ausgeführt wird, um das gewünschte Ergebnis zu erzielen.

Die bereitgestellten Abfragen lauten wie folgt:

<code class="language-sql">SET @runtot:=0;
SELECT
   q1.d,
   q1.c,
   (@runtot := @runtot + q1.c) AS rt
FROM
   (SELECT
       DAYOFYEAR(`date`) AS d,
       COUNT(*) AS c
    FROM  `orders`
    WHERE  `hasPaid` > 0
    GROUP  BY d
    ORDER  BY d) AS q1</code>

Diese Abfrage initialisiert zunächst die Benutzervariable @runtot mithilfe einer SET-Anweisung auf 0. Anschließend wird eine Unterabfrage ausgeführt, um die erforderlichen Daten aus der Auftragstabelle abzurufen. Schließlich kombiniert die äußere Abfrage die Ergebnisse der Unterabfrage mit einer laufenden Gesamtberechnung.

Die resultierende Tabelle enthält eine zusätzliche Spalte namens rt, die die laufende Summe für Spalte c für jede Zeile darstellt. Diese Lösung vermeidet die Verwendung veralteter Benutzervariablen in Ausdrücken und bietet einen effizienteren Ansatz mit einer einzigen Abfrageausführung.

Das obige ist der detaillierte Inhalt vonWie kann man laufende Summen in MySQL effizient berechnen?. 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