Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment créez-vous une différence de temps moyenne entre les enregistrements dans MySQL ?

Vous devez convertir votre horodatage en un nombre afin de pouvoir l'arrondir. Et lorsque vous avez l'horodatage moyen, reconvertissez-le en date.

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;

Note :Si vous considérez les temps négatifs, votre moyenne est évidente ! Si ce n'est pas le cas, mieux vaut le calculer avec un langage de script (php, c#, ruby...)

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

Généralisation :

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