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

Как да намерите средната времева разлика между редовете в таблица?

Ако вашата таблица е t, а колоната с времеви отпечатък е ts и искате отговора за секунди:

SELECT TIMESTAMPDIFF(SECOND, MIN(ts), MAX(ts) ) 
       /
       (COUNT(DISTINCT(ts)) -1) 
FROM t

Това ще бъде на мили по-бързо за големи маси, тъй като няма n-квадрат JOIN

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

Доказателство:Средното разстояние между последователните редове е сумата от разстоянието между последователните редове, разделено на броя на последователните редове. Но сумата от разликата между последователни редове е само разстоянието между първия и последния ред (ако приемем, че са сортирани по времева марка). А броят на последователните редове е общият брой редове -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. Странно поведение на SUM и CONCAT в MySql

  2. Как да се свържете с MySQL с помощта на PHP

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

  4. Най-бързият метод за архивиране и възстановяване на MySQL

  5. Обединяване на 3 таблици/заявки чрез MS Access Union Query