MySQL: Vorgänger suchen

Problem:

In einer Tabelle sind Messwerte mit einem Zeitstempel abgelegt. Es soll nun herausgefunden werden, wie lange die Messungen auseinanderliegen. D.h. es soll der Vorgänger der aktuellen Messung gesucht werden.

Lösung:

In einer Variablen wird das Messdatum gespeichert. Es steht dann im nächsten Datensatz zur Verfügung, bevor wiederum das Datum dieses Datensatzes in die Variable gespeichert wird. Die Differenz zu bilden ist dann einfach. Hier mein Query:

select 
    measuredate AS Messdatum,
    @a AS Vorgaenger,
    unix_timestamp(measuredate) - unix_timestamp(@a) AS Differenz,
    @a:=measuredate AS setVorgaenger
FROM
    (SELECT @a:='1970-01-01') rn,
    tbldatarecord t
ORDER BY measuredate

Das Startdatum des Vorgängers wird hier auf 1.1.1970 gesetzt. Das Query ist wesentlich performanter als alle Lösungen, die ich sonst im Netz gefunden habe.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert