SQL-Abfrage, um die Zeit jedes Status zu erhalten
P粉605385621
P粉605385621 2024-02-25 21:01:57
0
1
393

Gegeben ist eine Tabelle wie unten gezeigt

|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            |

Gibt es eine Möglichkeit, die in jedem Status verbrachte Zeit basierend auf dem Datum der Statusänderung zu verfolgen? Die Tabelle, mit der ich arbeite, enthält nur eine Datumsspalte.

Das gewünschte Ergebnis sieht so aus

|Time spent in phase|Status|
|2                  |Open
|7                  |In review
|5                  |Done

Ich habe nur eine Tabelle, mit der ich arbeiten kann. Gibt es also eine Abfrage, die dieses Problem gut lösen würde? Für diesen Workflow sind Regeln festgelegt, sodass nur geöffnete Dateien ausgeführt werden können.

Wenn ja, ist es möglich, diese Workflow-Statusänderungen zu nutzen, um potenzielle Anfragen zu erhalten?

P粉605385621
P粉605385621

Antworte allen(1)
P粉505917590

DBFIDDLE

尽管我最后对你的“问题”发表了评论,但我还是创建了一个小提琴。它有两个选项:

  • 选项1
SELECT 
    DATEDIFF(COALESCE(LEAD(`Date`) OVER (ORDER BY `Date`),`date`),`Date`) as 'Time spent in phase',
    `From`
FROM ThatLooksLikethis;

输出:

阶段花费的时间 来自
2 打开
7 进行中
5 审核中
0 完成
  • 选项2:
SELECT 
    DATEDIFF(`Date`,COALESCE(LAG(`Date`) OVER (ORDER BY `Date`),`date`)) as 'Time spent in phase',
    `From`
FROM ThatLooksLikethis;

输出:

阶段花费的时间 来自
0 打开
2 进行中
7 审核中
5 完成

附注这个答案使用MySQL 8.0函数 LEAD 和 LAG。如果您使用的不是 MySQL 8.0,而是旧版本,那么这个答案可能没用......

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage