sql >> Database teknologi >  >> RDS >> Mysql

Hvordan opretter du en gennemsnitlig tidsforskel mellem poster i MySQL?

Du skal konvertere dit tidsstempel til et tal for at kunne runde det. Og når du har det gennemsnitlige tidsstempel, skal du konvertere det tilbage til en dato.

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;

Bemærk:Hvis du overvejer negative tider, er dit gennemsnit indlysende! Hvis du ikke gør det, er det en bedre idé at beregne det med et scriptsprog (php, c#, ruby...)

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

Generalisering:

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


  1. vælg koordinater ved andre borde

  2. Indsamlingsmetode:FINDER Funktion i Oracle-databasen

  3. PostgreSQL-kolonneværdier skal være i en rækkefølge

  4. Kunne ikke oprette driveren fra NHibernate.Driver.NpgsqlDriver