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

¿Cómo se crea una diferencia de tiempo promedio entre registros en MySQL?

Tienes que convertir tu marca de tiempo en un número para poder redondearlo. Y cuando tenga la marca de tiempo promedio, vuelva a convertirla en una fecha.

select device, count(*) as cnt, FROM_UNIXTIME(AVG(UNIX_TIMESTAMP(time)), '%i:%s')
from database.table
group by device
having cnt>1
order by device;

Nota:¡Si considera tiempos negativos, su promedio es obvio! Si no es así, es una mejor idea calcularlo con un lenguaje de secuencias de comandos (php, c#, ruby...)

average := avg(ts1–ts2, ts2-ts3, ts3-ts4)
= (ts1–ts2 + ts2-ts3 + ts3-ts4)/3
= (ts4-ts1)/3

Generalización:

average = (last entry - first entry) / (number of entries - 1)