Heim >Datenbank >MySQL-Tutorial >Wie subtrahiere ich den Wert der vorherigen Zeile in einer gruppierten MySQL-Abfrage?

Wie subtrahiere ich den Wert der vorherigen Zeile in einer gruppierten MySQL-Abfrage?

DDD
DDDOriginal
2025-01-10 12:37:42850Durchsuche

How to Subtract the Previous Row's Value in a Grouped MySQL Query?

MySQL: Subtrahieren Sie den Wert der vorherigen Zeile in der gruppierten Abfrage

Das Subtrahieren eines Werts von der vorherigen Zeile ist eine häufige Aufgabe bei der Datenanalyse, kann jedoch bei der Arbeit mit gruppierten Daten eine Herausforderung darstellen. MySQL bietet eine allgemeine Methode zur Lösung dieser Situation.

Um den Unterschied im Energieverbrauch zwischen aufeinanderfolgenden Zeilen für jede SN zu berechnen, verwenden wir die Systemvariablen von MySQL (@lastSN und @lastValue) und eine Abfrage, die einen einzigen Durchgang über die Daten durchführt:

<code class="language-sql">SELECT
  EL.SN,
  EL.Date,
  EL.Value,
  IF(@lastSN = EL.SN, EL.Value - @lastValue, 0.00) AS Consumption,
  @lastSN := EL.SN,
  @lastValue := EL.Value
FROM
  EnergyLog EL,
  (SELECT @lastSN := 0, @lastValue := 0) SQLVars
ORDER BY
  EL.SN, EL.Date;</code>

Abfragen funktionieren wie folgt:

  1. Deklarieren Sie die MySQL-Variablen @lastSN und @lastValue, um die vorherige SN und den vorherigen Wert zu verfolgen.
  2. Vergleichen Sie für jede Zeile in der EnergyLog-Tabelle die aktuelle SN mit @lastSN.
  3. Wenn SN übereinstimmt, verwenden Sie IF(), um die Energiedifferenz zu berechnen. Andernfalls setzen Sie den Verbrauch auf 0.
  4. Aktualisieren Sie nach dem Vergleich @lastSN und @lastValue mit dem Wert der aktuellen Zeile.
  5. Sortieren Sie die Ergebnisse nach SN und Datum, um korrekte Berechnungen des Energieverbrauchs sicherzustellen.

Durch die Verwendung von MySQL-Variablen haben wir eine einfache und effiziente Lösung zur Berechnung des Energieverbrauchs basierend auf dem vorherigen Wert in einer gruppierten Abfrage implementiert.

Das obige ist der detaillierte Inhalt vonWie subtrahiere ich den Wert der vorherigen Zeile in einer gruppierten MySQL-Abfrage?. 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