Berechnen von Unterschieden zwischen Zeilen in einer MySQL-SELECT-Abfrage
Um den Unterschied zwischen Zeilen in einer SELECT-Abfrage zu berechnen, ziehen Sie den folgenden Ansatz in Betracht:
Verwenden eines LEFT JOIN mit einer MAX()-Unterabfrage
Sie können einen LEFT JOIN verwenden, um eine Zeile basierend auf einer Bedingung mit der vorherigen zu verbinden. In Ihrem Fall möchten Sie die vorherige Zeile für jedes Datum finden:
SELECT mt1.ID, mt1.Kilometers, mt1.date, mt1.Kilometers - IFNULL(mt2.Kilometers, 0) AS number_km_since_last_date FROM myTable mt1 LEFT JOIN myTable mt2 ON mt2.Date = ( SELECT MAX(Date) FROM myTable mt3 WHERE mt3.Date < mt1.Date ) ORDER BY mt1.date
Verwenden einer Lag()-Funktionsemulation
Da MySQL keine hat Mit der Funktion lag() können Sie eine mit einer benutzerdefinierten Variablen emulieren:
SET @kilo=0; SELECT mt1.ID, mt1.Kilometers - @kilo AS number_km_since_last_date, @kilo := mt1.Kilometers Kilometers, mt1.date FROM myTable mt1 ORDER BY mt1.date
Ergebnisse
Beide Methoden erzeugen die gewünschte Ausgabe:
ID | Kilometers | date | car_id | car_driver | number_km_since_last_date 1 | 100 | 2012-05-04 | 1 | 1 | 0 2 | 200 | 2012-05-08 | 1 | 1 | 100 4 | 600 | 2012-05-16 | 1 | 1 | 400 3 | 1000 | 2012-05-25 | 1 | 1 | 400
Das obige ist der detaillierte Inhalt vonWie kann ich den Unterschied zwischen Zeilen in einer MySQL SELECT-Abfrage berechnen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!