Heim >Datenbank >MySQL-Tutorial >Wie berechnet man den Verbrauch durch Subtrahieren vorheriger Zeilenwerte in MySQL, gruppiert nach SN?

Wie berechnet man den Verbrauch durch Subtrahieren vorheriger Zeilenwerte in MySQL, gruppiert nach SN?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-10 11:41:42120Durchsuche

How to Calculate Consumption by Subtracting Previous Row Values in MySQL, Grouped by SN?

Berechnung des Verbrauchs in MySQL: Subtrahieren vorheriger Zeilenwerte, gruppiert nach SN

Diese Anleitung zeigt, wie Sie den Verbrauch berechnen, indem Sie aufeinanderfolgende Werte innerhalb jeder SN Gruppe in einer MySQL-Tabelle vergleichen. Die Daten umfassen die Spalten SN (Seriennummer) und Value, die Messungen im Zeitverlauf darstellen. Das Ziel besteht darin, den Verbrauch für jeden SN zu berechnen, indem der vorhergehende Wert vom aktuellen Wert subtrahiert wird.

Hier ist eine MySQL-Abfrage, die benutzerdefinierte Variablen nutzt, um dies zu erreichen:

<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 := NULL, @lastValue := NULL) AS SQLVars
ORDER BY
  EL.SN,
  EL.Date;</code>

Erklärung der Abfrage:

  1. Variableninitialisierung: Die Unterabfrage (SELECT @lastSN := NULL, @lastValue := NULL) AS SQLVars initialisiert die benutzerdefinierten Variablen @lastSN (um das vorherige SN zu verfolgen) und @lastValue (um das vorherige Value zu verfolgen) auf NULL. Wenn Sie NULL anstelle von 0 verwenden, wird die erste Zeile jeder SN-Gruppe korrekt behandelt.

  2. Zeilenweise Verarbeitung: Die Hauptabfrage durchläuft die Tabelle EnergyLog (alias EL), geordnet nach SN und Date.

  3. Verbrauchsberechnung: Die IF-Anweisung prüft, ob das aktuelle SN (EL.SN) mit dem zuvor verarbeiteten SN (@lastSN) übereinstimmt.

    • Wenn sie übereinstimmen, wird der Verbrauch als EL.Value - @lastValue berechnet.
    • Wenn sie nicht übereinstimmen (d. h. eine neue SN Gruppe), wird der Verbrauch auf 0,00 gesetzt.
  4. Variablenaktualisierung: @lastSN := EL.SN und @lastValue := EL.Value aktualisieren die Variablen für den Vergleich der nächsten Zeile.

  5. Ausgabe: Die Abfrage gibt die SN, Date, Value und berechneten Consumption für jede Zeile zurück.

Dieser Ansatz berechnet effizient den Verbrauch innerhalb jeder SN Gruppe mithilfe einer einzigen Abfrage, sodass keine komplexeren Unterabfragen oder Verknüpfungen erforderlich sind. Die Verwendung benutzerdefinierter Variablen macht die Berechnung präzise und performant.

Das obige ist der detaillierte Inhalt vonWie berechnet man den Verbrauch durch Subtrahieren vorheriger Zeilenwerte in MySQL, gruppiert nach SN?. 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