Mysql
 sql >> база данни >  >> RDS >> Mysql

Как създавате средна разлика във времето между записите в MySQL?

Трябва да преобразувате вашето времево клеймо в число, за да можете да го закръглите. И когато имате средното времево клеймо, преобразувайте го обратно в дата.

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;

Забележка:Ако вземете предвид отрицателни времена, средната ви стойност е очевидна! Ако не го направите, по-добра идея е да го изчислите със скриптов език (php, c#, ruby...)

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

Обобщение:

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. грешка във вашия SQL синтаксис при създаване на MySQL тригер

  2. Как да вземем Count (*) като променлива от SQL към php?

  3. Как да наложите персонализиран формат на колоната на MySQL

  4. Проблеми с показването на изображения на петна

  5. PHP към MySQL SSL връзки