Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como você cria uma diferença de tempo médio entre registros no MySQL?


Você precisa converter seu carimbo de data/hora em um número para poder arredondar. E quando você tiver o timestamp médio, converta-o de volta para uma data.
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:Se você considerar tempos negativos, sua média é óbvia! Caso contrário, é melhor calculá-lo com uma linguagem de script (php, c#, ruby...)
average := avg(ts1–ts2, ts2-ts3, ts3-ts4)
= (ts1–ts2 + ts2-ts3 + ts3-ts4)/3
= (ts4-ts1)/3

Generalização:
average = (last entry - first entry) / (number of entries - 1)