Heim >Datenbank >MySQL-Tutorial >Wie erstelle ich effizient eine kumulative Summenspalte in MySQL?

Wie erstelle ich effizient eine kumulative Summenspalte in MySQL?

DDD
DDDOriginal
2025-01-22 09:52:10146Durchsuche

How to Efficiently Create a Cumulative Sum Column in MySQL?

Kumulative Summenspalte in MySQL erstellen

Um der Tabelle eine kumulative Summenspalte (cumulative_sum) hinzuzufügen, müssen Sie die vorhandene Spalte mit einer laufenden Summe aktualisieren. Hier sind zwei Möglichkeiten, dies in MySQL zu erreichen:

Verwenden Sie eine korrelierte Unterabfrage:

<code class="language-sql">SELECT
  t.id,
  t.count,
  (
    SELECT
      SUM(x.count)
    FROM table AS x
    WHERE
      x.id <= t.id
  ) AS cumulative_sum
FROM table AS t
ORDER BY
  t.id;</code>

Diese Abfrage verwendet eine verschachtelte Abfrage, um die kumulative Summe jeder Zeile basierend auf Zeilen mit IDs zu berechnen, die kleiner oder gleich der aktuellen Zeilen-ID sind.

MySQL-Variablen verwenden:

<code class="language-sql">SELECT
  t.id,
  t.count,
  (@running_total := @running_total + t.count) AS cumulative_sum
FROM table AS t
JOIN
  (SELECT @running_total := 0) AS r
ORDER BY
  t.id;</code>

Diese Methode nutzt MySQL-Variablen, um die laufende Summe zu verfolgen, während über Zeilen iteriert wird. Die Variable @running_total wird auf 0 initialisiert und dann für jede Zeile erhöht.

Hinweis:

  • Diese Methoden sind spezifisch für MySQL und möglicherweise nicht auf andere Datenbanken portierbar.
  • Das Einhalten der richtigen Reihenfolge ist entscheidend, insbesondere wenn Variablen für komplexe Berechnungen verwendet werden.

Das obige ist der detaillierte Inhalt vonWie erstelle ich effizient eine kumulative Summenspalte in MySQL?. 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