Hier ist eine Lösung ohne Variablen. Ich nehme an, Sie haben Ihre Anfangsdaten in einer Tabelle namens thetable
.
SELECT date, time, ip,
result - IFNULL( (
SELECT MAX( result )
FROM thetable
WHERE ip = t1.ip
AND ( date < t1.date
OR date = t1.date AND time < t1.time )
) , 0) AS diff
FROM thetable AS t1
ORDER BY ip, date, time
Hier erhalten wir den vorherigen Wert mit einem Subselect (das maximale result
der vorhergehenden Zeitstempel von derselben ip
). IFNULL
gibt uns eine 0, wenn dies der erste Wert war, sodass anfängliche Ergebnisse korrekt angezeigt werden.
Ich empfehle auch, den folgenden Index zu thetable
hinzuzufügen :
CREATE INDEX sort1 ON thetable (ip, date, time);