Maison > base de données > tutoriel mysql > Comment SQL peut-il identifier des plages de dates consécutives dans un ensemble de données ?

Comment SQL peut-il identifier des plages de dates consécutives dans un ensemble de données ?

Susan Sarandon
Libérer: 2025-01-01 07:07:10
original
491 Les gens l'ont consulté

How Can SQL Identify Consecutive Date Ranges Within a Dataset?

Détection de plages de dates consécutives avec SQL

Pour déterminer des plages de dates consécutives dans une colonne de dates, des techniques SQL peuvent être utilisées. Considérons un scénario dans lequel un objet de calendrier nécessite des informations sur les dates de début et de fin, et une colonne donnée contient une série de dates, dont certaines sont adjacentes et d'autres non. Pour identifier efficacement ces plages consécutives, une solution SQL robuste est recherchée.

Une approche consiste à exploiter la propriété invariante des séquences consécutives lors du regroupement par différence entre les valeurs de date et les numéros de ligne. Les dates de début et de fin au sein de chaque groupe sont ensuite récupérées respectivement comme valeurs minimale et maximale.

La requête SQL suivante illustre cette approche :

WITH t AS (
  SELECT InfoDate d,ROW_NUMBER() OVER(ORDER BY InfoDate) i
  FROM @d
  GROUP BY InfoDate
)
SELECT MIN(d),MAX(d)
FROM t
GROUP BY DATEDIFF(day,i,d)
Copier après la connexion

Cette requête regroupe efficacement les dates par leur différence par rapport à leurs numéros de ligne correspondants, ce qui donne lieu à des groupes distincts pour chaque séquence consécutive. Les dates minimales et maximales au sein de chaque groupe sont ensuite sélectionnées pour représenter les plages de début et de fin.

En utilisant cette méthode, le résultat souhaité peut être obtenu, fournissant une liste complète de plages de dates consécutives triées par différence entre leurs dates de début et de fin.

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