Heim > Datenbank > MySQL-Tutorial > Wie berechnet man Verbrauchswerte durch Subtrahieren von der vorherigen Zeile in MySQL?

Wie berechnet man Verbrauchswerte durch Subtrahieren von der vorherigen Zeile in MySQL?

Patricia Arquette
Freigeben: 2025-01-10 12:01:43
Original
578 Leute haben es durchsucht

How to Calculate Consumption Values by Subtracting from the Previous Row in MySQL?

Berechnen Sie den Verbrauchswert pro Gruppe in MySQL: basierend auf der Differenz der vorherigen Zeile

Das Berechnen der Differenz zwischen aufeinanderfolgenden Werten basierend auf einem Gruppierungsfaktor ist eine sehr häufige Aufgabe in MySQL. Angenommen, Sie müssen den Verbrauchswert jeder Sequenznummer (SN) basierend auf dem vorherigen Wert berechnen.

Datenstruktur:

Die Beispieldaten enthalten die Tabelle EnergyLog mit dem folgenden Schema:

<code>SN | 日期 | 值</code>
Nach dem Login kopieren

Erwartete Ergebnisse:

Das Ziel besteht darin, die Tabelle um eine Spalte „Verbrauch“ zu erweitern, die die Differenz jedes SN relativ zum „Wert“ der vorherigen Zeile darstellt.

Lösung:

MySQL-Variablen bieten eine praktische Möglichkeit, dies zu erreichen. Durch die Verwendung benutzerdefinierter Variablen (@lastSN und @lastValue) können wir die vorherige SN und den vorherigen Wert verfolgen, während wir die Daten durchlaufen.

<code class="language-sql">-- 声明变量
SELECT
  EL.SN,
  EL.日期,
  EL.值,
  IF(@lastSN = EL.SN, EL.值 - @lastValue, 0.00) AS 消耗,
  @lastSN := EL.SN,
  @lastValue := EL.值
-- 来自表
FROM EnergyLog EL,
  (SELECT @lastSN := 0, @lastValue := 0) AS SQLVars
-- 按分组因子SN和日期排序
ORDER BY
  EL.SN,
  EL.日期;</code>
Nach dem Login kopieren

Erklärung:

    Die
  • FROM-Klausel deklariert Variablen (@lastSN und @lastValue) und initialisiert sie auf 0.
  • Die Abfrage iteriert die EnergyLog-Tabelle in der gewünschten Reihenfolge (nach SN und Datum).
  • Es vergleicht die aktuelle SN mit @lastSN. Wenn es eine Übereinstimmung gibt, berechnen Sie den Verbrauch (Differenz) zwischen dem aktuellen Wert und dem vorherigen @lastValue.
  • Wenn SN unterschiedlich ist, nehmen Sie eine neue Gruppe an und setzen Sie den Verbrauch auf 0 zurück.
  • Die Variablen
  • @lastSN und @lastValue werden bei der nächsten Iteration aktualisiert.

Ausgabe:

SN 日期 消耗
2380 2012-10-30 21.01 0.00
2380 2012-10-31 22.04 1.03
2380 2012-11-01 22.65 0.61
2380 2012-11-02 23.11 0.46
20100 2012-10-30 35.21 0.00
20100 2012-10-31 37.07 1.86
20100 2012-11-01 38.17 1.10
20100 2012-11-02 38.97 0.80
20103 2012-10-30 57.98 0.00
20103 2012-10-31 60.83 2.85

Das obige ist der detaillierte Inhalt vonWie berechnet man Verbrauchswerte durch Subtrahieren von der vorherigen Zeile in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage