Hier is een oplossing zonder variabelen. Ik neem aan dat je je initail-gegevens hebt in een tabel met de naam 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 krijgen we de vorige waarde met een subselect (het maximale result
van de voorgaande tijdstempels van hetzelfde ip
). IFNULL
geeft ons een 0 als dit de eerste waarde was, zodat de eerste resultaten correct worden weergegeven.
Ik raad ook aan om de volgende index toe te voegen aan thetable
:
CREATE INDEX sort1 ON thetable (ip, date, time);