J'utilise SQL Server 2017.
Je veux résoudre comment savoir de temps de durée sans se chevaucher de temps. Reportez-vous au code ci-dessous. p>
données: p> résultat (seconde): p> déjà j'ai résolu le calcul de La durée totale de la durée de la durée code>. p> mais j'ai raté le temps qui se chevauche comme des données de groupe 1. p> Comment puis-je calculer le temps de durée sans se chevaucher de temps? p> Il est difficile de faire des requêtes facilement et de bonnes performances. P> < / p>
6 Réponses :
En référence à, et sur la base de, requêtes SQL pour des périodes de temps de chevauchement sur SQL Server ...
Lorsque vous comparez deux périodes T1 et T2, il y a cinq possibilités: P>
Ceci est composé lorsque T3 est introduit et peut chevaucher tout, tout ou aucun de T1 et T2. P>
commençant par votre exemple de données: P>
Group DurationTime ----------- ------------ 1 80 2 20 3 30
SELECT [GROUP]
,sum(CONVERT(INTEGER, REPLACE(CONVERT(VARCHAR, TODATE, 24), ':', '')) - CONVERT(INTEGER, REPLACE(CONVERT(VARCHAR, FROMDATE, 24), ':', ''))) as DurationTime
FROM GROUPS
GROUP BY [GROUP]
Mise en œuvre SQL de l'algorithme de Marzullo: https://fr.wikipedia.org/wiki/marzullo % 27S_ALGORITHM . le résultat: p> L'idée est simple: p>
Je m'approcherais comme un problème de lacunes et de îles. Vous pouvez identifier les "îles" en procédant comme suit:
Vous pouvez le faire à l'aide des fonctions de la fenêtre: p> Vous pouvez ensuite agréger cela par ici est un dB <> fidoue. < / p> p> groupid code>: p> < Pré> xxx pré>
algorithme de marzullo ( https://stackoverflow.com/a/58133814/12130544 ) est le meilleur de mon vivre. Non seulement pour calculer la durée de l'événement, mais surtout pour l'identification des intervalles de validité non croisés. Utilisé avec succès cet algorithme pour identifier les périodes lorsque SKU est en assortiment du magasin dans le commerce de détail et d'identifier les dates de début et de fin de la session de données mobiles du client dans les télécommunications. Et pour de nombreux autres scénarios. Fortement recommandé. P>
S'il vous plaît montrer ce que vous avez essayé (c'est-à-dire, montrez votre requête) et quels résultats obtenus par rapport aux résultats que vous attendez.
Pouvez-vous expliquer quelle durée et le temps de chevauchement signifie utiliser vos données d'échantillon?
Pouvez-vous expliquer pourquoi
1 | 2019-09-30 11:20:10 | 2019-09-30 11:20:20 code> n'est pas inclus dans le groupe 1? Ne cherchez-vous que la durée totale des heures de chevauchement? Parce que ce n'est pas la façon dont votre question est intitulée.