Si la tabla es t, y su columna de marca de tiempo es ts, y desea que la respuesta en segundos:
SELECT TIMESTAMPDIFF(SECOND, MIN(ts), MAX(ts))
/
(COUNT(DISTINCT(ts)) -1)
FROM t
Esto será millas más rápido para tablas grandes ya que no tiene n-squared JOIN
Esto utiliza un lindo truco matemático que ayuda con este problema. Ignora el problema de los duplicados por el momento. La diferencia de tiempo promedio entre filas consecutivas es la diferencia entre la primera marca de tiempo y la última marca de tiempo, dividida por el número de filas -1.
Prueba: La distancia promedio entre filas consecutivas es la suma de la distancia entre filas consecutivas, dividida por el número de filas consecutivas. Pero la suma de la diferencia entre filas consecutivas es solo la distancia entre la primera fila y la última fila (suponiendo que estén ordenadas por marca de tiempo). Y el número de filas consecutivas es el número total de filas -1.
A continuación, simplemente condicionamos las marcas de tiempo para que sean distintas.
Gracias, esto es asombroso. –
Brillante. Gran respuesta para evitar la posible duplicación de marcas de tiempo. – Bell
Bien hecho. La matemática simple es siempre la mejor opción. – Rob