Maison >base de données >tutoriel mysql >Comment calculer les différences de temps entre des lignes consécutives dans un tableau ?

Comment calculer les différences de temps entre des lignes consécutives dans un tableau ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-28 06:56:17538parcourir

How to Calculate Time Differences between Consecutive Rows in a Table?

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 :

  1. 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.
  2. 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).
  3. 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