Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak stworzyć średnią różnicę czasu między rekordami w MySQL?

Musisz przekonwertować swój znacznik czasu na liczbę, aby móc go zaokrąglić. A kiedy masz średni znacznik czasu, przekonwertuj go z powrotem na datę.

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;

Uwaga:Jeśli weźmiesz pod uwagę ujemne czasy, Twoja średnia jest oczywista! Jeśli nie, lepiej obliczyć je za pomocą języka skryptowego (php, c#, ruby...)

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

Uogólnienie:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Nieznana kolumna w miejscu błędu klauzuli

  2. Optymalizacja importu MySQL (konwertowanie pełnego zrzutu SQL do szybkiego / użyj rozszerzonych wstawek)

  3. Oblicz 1 tydzień przed ostatnią niedzielą i od dziś do ostatniej niedzieli

  4. Wyzwalacz MySQL przed usunięciem, aby uniknąć usuwania wielu wierszy

  5. Proces potomny Apache został zakończony ze statusem 255