Maison > base de données > tutoriel mysql > le corps du texte

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
300 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!

source:php.cn
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