sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo encontrar la diferencia de tiempo promedio entre filas en una tabla?

Si su tabla es t, y su columna de marca de tiempo es ts, y quiere la respuesta en segundos:

SELECT TIMESTAMPDIFF(SECOND, MIN(ts), MAX(ts) ) 
       /
       (COUNT(DISTINCT(ts)) -1) 
FROM t

Esto será mucho más rápido para mesas grandes ya que no tiene JOIN de n cuadrados

Esto utiliza un lindo truco matemático que ayuda con este problema. Ignore el problema de los duplicados por el momento. La diferencia de tiempo promedio entre filas consecutivas es la diferencia entre la primera 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.

Luego solo condicionamos las marcas de tiempo para que sean distintas.