Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment trouver la différence de temps moyenne entre les lignes d'un tableau ?

Si votre table est t, et que votre colonne d'horodatage est ts, et que vous voulez la réponse en secondes :

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

Ce sera des kilomètres plus rapide pour les grandes tables car il n'a pas de JOIN n-squared

Cela utilise une astuce mathématique mignonne qui aide à résoudre ce problème. Ignorez le problème des doublons pour le moment. La différence de temps moyenne entre des lignes consécutives est la différence entre le premier horodatage et le dernier horodatage, divisée par le nombre de lignes -1.

Preuve :La distance moyenne entre les lignes consécutives est la somme de la distance entre les lignes consécutives, divisée par le nombre de lignes consécutives. Mais la somme de la différence entre les lignes consécutives est juste la distance entre la première ligne et la dernière ligne (en supposant qu'elles sont triées par horodatage). Et le nombre de lignes consécutives est le nombre total de lignes -1.

Ensuite, nous conditionnons simplement les horodatages pour qu'ils soient distincts.