Maison > Questions et réponses > le corps du texte
Étant donné un tableau comme indiqué ci-dessous
|date |From | To | |01/01/21 |Open |In progress | |01/03/21 |In progress|In review | |01/10/21 |In Review |Done | |01/15/21 |Done |Resolved |
Existe-t-il un moyen de suivre le temps passé dans chaque statut en fonction de la date à laquelle le statut a changé ? La table avec laquelle je travaille n'a qu'une colonne de date.
Le résultat souhaité ressemble à ceci
|Time spent in phase|Status| |2 |Open |7 |In review |5 |Done
Je n'ai qu'une seule table avec laquelle travailler, alors existe-t-il une requête qui résoudrait bien ce problème ? Ce flux de travail a des règles définies pour que seules les opérations ouvertes puissent progresser.
Si tel est le cas, est-il possible d'utiliser ces changements d'état du workflow pour obtenir des requêtes potentielles ?
P粉5059175902024-02-26 16:29:29
Malgré mon dernier commentaire sur votre "question", j'ai créé un violon. Il a deux options :
SELECT DATEDIFF(COALESCE(LEAD(`Date`) OVER (ORDER BY `Date`),`date`),`Date`) as 'Time spent in phase', `From` FROM ThatLooksLikethis;
Sortie :
Temps passé sur scène | de |
---|---|
2 | Ouvert |
7 | En cours |
5 | En cours de révision |
0 | Complet |
SELECT DATEDIFF(`Date`,COALESCE(LAG(`Date`) OVER (ORDER BY `Date`),`date`)) as 'Time spent in phase', `From` FROM ThatLooksLikethis;
Sortie :
Temps passé sur scène | de |
---|---|
0 | Ouvert |
2 | En cours |
7 | En cours de révision |
5 | Complet |
P.S. Cette réponse utilise les fonctions MySQL 8.0 LEAD< /a> et LAG. Si vous n'utilisez pas MySQL 8.0, mais une version plus ancienne, cette réponse peut ne pas être utile...