Maison > base de données > tutoriel mysql > Comment calculer la différence de temps entre des lignes consécutives dans une table SQL ?

Comment calculer la différence de temps entre des lignes consécutives dans une table SQL ?

Mary-Kate Olsen
Libérer: 2024-11-15 12:55:03
original
414 Les gens l'ont consulté

How to Calculate Time Difference Between Consecutive Rows in a SQL Table?

Calcul de la différence de temps entre des lignes consécutives

La tâche consiste à déterminer la différence de temps entre des enregistrements consécutifs dans une table contenant une colonne StartDate. Pour y parvenir, nous pouvons utiliser une auto-jointure et comparer chaque enregistrement avec son enregistrement suivant dans le tableau.

Utilisation d'une auto-jointure :

Pour comparer des enregistrements, nous pouvons utiliser une auto-jointure sur la table. Voici un exemple de requête :

SELECT A.requestid, A.starttime, (B.starttime - A.starttime) AS timedifference
FROM MyTable A
INNER JOIN MyTable B ON B.requestid = (A.requestid + 1)
ORDER BY A.requestid ASC;
Copier après la connexion

Cette requête crée une table jointe dans laquelle chaque enregistrement (A) est associé à son enregistrement suivant (B). La différence de temps de colonne calculée donne la différence de temps entre les deux enregistrements.

Gestion des identifiants de requête non consécutifs :

Si les identifiants de requête ne sont pas consécutifs, nous pouvons utiliser un CROSS JOIN et filtrage supplémentaire pour faire correspondre chaque enregistrement avec son successeur immédiat.

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;
Copier après la connexion

Cette requête garantit que chaque enregistrement est correspond à son successeur immédiat, même si les identifiants de requête ne sont pas consécutifs.

Exemples de données :

Considérez les exemples de données fournis par l'auteur :

requestId startdate
1 2011-10-16 13:15:56
2 2011-10-16 13:15:59
3 2011-10-16 13:15:59
4 2011-10-16 13:16:02
5 2011-10-16 13:18:07

Sortie :

L'application de la requête ci-dessus aux exemples de données produira le sortie suivante :

requestId startdate timedifference
1 2011-10-16 13:15:56 NULL
2 2011-10-16 13:15:59 00:00:03
3 2011-10-16 13:15:59 00:00:00
4 2011-10-16 13:16:02 00:00:03
5 2011-10-16 13:18:07 00:02:05

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal