Maison > base de données > tutoriel mysql > La fusion d'intervalles de dates qui se chevauchent peut-elle être optimisée pour une plus grande efficacité ?

La fusion d'intervalles de dates qui se chevauchent peut-elle être optimisée pour une plus grande efficacité ?

DDD
Libérer: 2024-12-30 16:56:10
original
987 Les gens l'ont consulté

Can Merging Overlapping Date Intervals Be Optimized for Greater Efficiency?

Fusionner les intervalles de dates qui se chevauchent

Problème :

Le processus de fusion des intervalles de dates qui se chevauchent être amélioré ?

Discussion :

La solution présentée dans le message d'origine est simple, mais il peut y avoir des méthodes plus efficaces disponibles.

Solution :

Une solution alternative s'inspire de l'article "Combinez les dates et heures qui se chevauchent pour renvoyer une plage unique qui se chevauche record."

Cette solution utilise une sous-requête pour identifier la date de fin maximale dans chaque intervalle, puis effectue une opération d'auto-jointure pour combiner les intervalles qui se chevauchent :

SELECT 
       s1.StartDate,
       --t1.EndDate 
       MIN(t1.EndDate) AS EndDate
FROM @T s1 
INNER JOIN @T t1 ON s1.StartDate <= t1.EndDate
  AND NOT EXISTS(SELECT * FROM @T t2 
                 WHERE t1.EndDate >= t2.StartDate AND t1.EndDate < t2.EndDate) 
WHERE NOT EXISTS(SELECT * FROM @T s2 
                 WHERE s1.StartDate > s2.StartDate AND s1.StartDate <= s2.EndDate) 
GROUP BY s1.StartDate 
ORDER BY s1.StartDate 
Copier après la connexion

Résultats :

Grâce à cette solution, les résultats suivants sont obtenus :

StartDate EndDate
2010-01-01 2010-06-13
2010-06-15 2010-06-25
2010-06-26 2010-08-16
2010-11-01 2010-12-31

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