sql >> Databasteknik >  >> RDS >> Mysql

Hur hittar man den genomsnittliga tidsskillnaden mellan rader i en tabell?

Om din tabell är t och din tidsstämpelkolumn är ts och du vill ha svaret på några sekunder:

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

Detta kommer att gå mil snabbare för stora bord eftersom det inte har någon n-kvadrat JOIN

Detta använder ett sött matematiskt trick som hjälper till med detta problem. Ignorera problemet med dubbletter för tillfället. Den genomsnittliga tidsskillnaden mellan på varandra följande rader är skillnaden mellan den första tidsstämpeln och den sista tidsstämpeln, dividerat med antalet rader -1.

Bevis:Det genomsnittliga avståndet mellan på varandra följande rader är summan av avståndet mellan på varandra följande rader, dividerat med antalet på varandra följande rader. Men summan av skillnaden mellan på varandra följande rader är bara avståndet mellan första raden och sista raden (förutsatt att de är sorterade efter tidsstämpel). Och antalet på varandra följande rader är det totala antalet rader -1.

Sedan villkorar vi bara tidsstämplarna så att de är distinkta.



  1. Fråga för att få föräldraposter med underordnade poster, följt av nästa förälder-underordnade poster i mysql

  2. GRANT med databasnamn jokertecken i MySQL?

  3. Mysqldump:skapa kolumnnamn för infogningar vid säkerhetskopiering

  4. Arbeta med JavaFX Chart APIs