sql >> Databasteknik >  >> RDS >> Mysql

Hur skapar du en genomsnittlig tidsskillnad mellan poster i MySQL?

Du måste konvertera din tidsstämpel till ett tal för att kunna runda den. Och när du har den genomsnittliga tidsstämpeln, konvertera den tillbaka till ett datum.

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;

Obs:Om du tänker på negativa tider är ditt genomsnitt uppenbart! Om du inte gör det är det en bättre idé att beräkna det med ett skriptspråk (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. MySQL GTID-konsistensbrott

  2. 7 sätt att returnera alla tabeller med främmande nycklar i SQL Server

  3. Laravel vältalig - Finns det något sätt att lägga till tips före SELECT?

  4. C#, problem med att få dubbla värden från MySQL-databasen