Calcul de la différence de date des lignes consécutives SQL
La détermination de l'intervalle de temps entre des enregistrements consécutifs est cruciale pour l'analyse des données lorsque vous travaillez avec de grands ensembles de données. Dans cet exemple, une requête SQL est nécessaire pour calculer la différence de date entre des lignes consécutives portant le même numéro de compte.
Ce qui suit est une requête possible :
<code class="language-sql">SELECT T1.ID, T1.AccountNumber, T1.Date, MIN(T2.Date) AS NextDate, DATEDIFF(day, T1.Date, MIN(T2.Date)) AS DaysDiff FROM YourTable T1 LEFT JOIN YourTable T2 ON T1.AccountNumber = T2.AccountNumber AND T2.Date > T1.Date GROUP BY T1.ID, T1.AccountNumber, T1.Date;</code>
Cette requête utilise LEFT JOIN
pour comparer chaque ligne du tableau T1
(le tableau d'origine) à toutes les lignes suivantes du tableau T2
qui ont le même numéro de compte. Il utilise ensuite la fonction DATEDIFF
pour calculer la différence de date et regroupe les résultats par ID
, AccountNumber
et Date
pour supprimer les lignes en double. DATEDIFF(day, ...)
Spécifie le nombre de jours pour calculer la différence.
Une autre méthode est la suivante :
<code class="language-sql">SELECT ID, AccountNumber, Date, LEAD(Date, 1, NULL) OVER (PARTITION BY AccountNumber ORDER BY Date) AS NextDate, DATEDIFF(day, Date, LEAD(Date, 1, NULL) OVER (PARTITION BY AccountNumber ORDER BY Date)) AS DaysDiff FROM YourTable;</code>
Cette requête utilise des fonctions de fenêtre LEAD
pour obtenir la date de la ligne suivante pour chaque numéro de compte. LEAD(Date, 1, NULL) OVER (PARTITION BY AccountNumber ORDER BY Date)
Obtenez la date de la ligne suivante de la ligne actuelle, ou renvoyez NULL s'il n'y a pas de ligne suivante. Calculez ensuite la différence de date et présentez le résultat dans le format requis. Cette méthode est généralement plus efficace que LEFT JOIN
, notamment sur de grands ensembles de données.
Les deux méthodes peuvent calculer la différence de date de lignes consécutives. La méthode à choisir dépend de votre système de base de données et de vos exigences de performances. La deuxième méthode (en utilisant LEAD
) est généralement plus concise et efficace.
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!