Heim >Datenbank >MySQL-Tutorial >Wie berechnet man den Verbrauch durch Subtrahieren vorheriger Zeilenwerte in MySQL, gruppiert nach 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:
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.
Zeilenweise Verarbeitung: Die Hauptabfrage durchläuft die Tabelle EnergyLog
(alias EL
), geordnet nach SN
und Date
.
Verbrauchsberechnung: Die IF
-Anweisung prüft, ob das aktuelle SN
(EL.SN
) mit dem zuvor verarbeiteten SN
(@lastSN
) übereinstimmt.
EL.Value - @lastValue
berechnet.SN
Gruppe), wird der Verbrauch auf 0,00 gesetzt.Variablenaktualisierung: @lastSN := EL.SN
und @lastValue := EL.Value
aktualisieren die Variablen für den Vergleich der nächsten Zeile.
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!