Calcul des différences de temps entre des lignes consécutives
Vous disposez d'un tableau contenant une colonne StartDate et souhaitez calculer la différence de temps entre deux lignes adjacentes. Pour ce faire, suivez ces étapes :
-
Implémentez une auto-jointure : Pour relier les lignes voisines, effectuez une auto-jointure sur la table. Cependant, assurez-vous que la condition de jointure est appropriée.
-
Join sur les ID de demande séquentiels : Pour calculer la différence de temps entre des lignes consécutives, joignez-vous aux ID de demande qui augmentent séquentiellement de un. Ceci peut être réalisé en utilisant la condition de jointure suivante : B.requestid = (A.requestid 1).
-
Calculer le décalage horaire : Après avoir joint les lignes, récupérez le décalage horaire à l'aide de l'expression ( B.starttime - A.starttime). Ce calcul soustrait la StartDate de la ligne précédente de celle de la ligne actuelle, fournissant ainsi la différence de temps entre elles.
Si les ID de requête ne sont pas consécutifs, vous pouvez exploiter la requête suivante :
SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference
FROM MyTable A CROSS JOIN MyTable B
WHERE B.requestid IN (SELECT MIN (C.requestid) FROM MyTable C WHERE C.requestid > A.requestid)
ORDER BY A.requestid ASC
Cette requête utilise une jointure croisée et sélectionne l'ID de requête minimum supérieur à l'ID de requête actuel à partir d'une sous-requête. Par la suite, il calcule le décalage horaire comme auparavant.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn