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

SQL Calculez la différence de temps moyenne entre le nombre total de lignes

Si vous voulez savoir combien de fois (en moyenne) une ligne a été insérée, je ne pense pas que vous ayez besoin de calculer toutes les différences. Il vous suffit de résumer les différences entre les lignes adjacentes (adjacentes en fonction de l'horodatage) et de diviser le résultat par le nombre de sommations.

La formule

((T1-T0) + (T2-T1) + … + (TN-TN-1)) / N

peut évidemment être simplifié à simplement

(TN-T0) / N

Ainsi, la requête ressemblerait à ceci :

SELECT TIMESTAMPDIFF(SECOND, MIN(date), MAX(date)) / (COUNT(*) - 1)
FROM atable

Assurez-vous que le nombre de lignes est supérieur à 1, sinon vous obtiendrez l'erreur Division par zéro. Néanmoins, si vous le souhaitez, vous pouvez éviter l'erreur avec une astuce simple :

SELECT
  IFNULL(TIMESTAMPDIFF(SECOND, MIN(date), MAX(date)) / NULLIF(COUNT(*) - 1, 0), 0)
FROM atable

Vous pouvez maintenant exécuter la requête en toute sécurité sur une table avec une seule ligne.