Om din tabell är t och din tidsstämpelkolumn är ts och du vill ha svaret på några sekunder:
SELECT TIMESTAMPDIFF(SECOND, MIN(ts), MAX(ts) )
/
(COUNT(DISTINCT(ts)) -1)
FROM t
Detta kommer att gå mil snabbare för stora bord eftersom det inte har någon n-kvadrat JOIN
Detta använder ett sött matematiskt trick som hjälper till med detta problem. Ignorera problemet med dubbletter för tillfället. Den genomsnittliga tidsskillnaden mellan på varandra följande rader är skillnaden mellan den första tidsstämpeln och den sista tidsstämpeln, dividerat med antalet rader -1.
Bevis:Det genomsnittliga avståndet mellan på varandra följande rader är summan av avståndet mellan på varandra följande rader, dividerat med antalet på varandra följande rader. Men summan av skillnaden mellan på varandra följande rader är bara avståndet mellan första raden och sista raden (förutsatt att de är sorterade efter tidsstämpel). Och antalet på varandra följande rader är det totala antalet rader -1.
Sedan villkorar vi bara tidsstämplarna så att de är distinkta.