SQL - Se på foregående værdi, og indregne tiden.
HejJeg har en fungerende SQL Query, der returnere antallet af sekunder en værdi har været i colonne MState, siden et specefikt tidspunkt.
Min Query tager dog ikke tiden med fra '08:05' til en ny værdi logges, da den ser på 'Time_Stamp' > 08:05
Så hvis jeg skal se på hvormange sekunder MState har haft værdien 4, siden kl 08:05, skal se se på om det foregående log har værdien 4. Hvis det har værdien 4 skal sekunder fra 08:05 til 08:10 lægges til SUM.
Nogen der har et forslag til hvordan jeg kan gøre det?
|Time_Stamp | MState |
|------------------------|------ |
|2021-04-23 07:50:00 | 3 |
|2021-04-23 08:00:00 | 4 |
|2021-04-23 08:10:00 | 1 |
|2021-04-23 08:22:00 | 2 |
|2021-04-23 08:30:00 | 3 |
|2021-04-23 08:40:00 | 4 |
|2021-04-23 08:50:00 | 1 |
|2021-04-23 09:01:00 | 2 |
|2021-04-23 09:10:00 | 3 |
SELECT SUM(Seconds_In_State) From
(SELECT
Time_Stamp,
MState,
(-1 * TIMESTAMPDIFF(Minute, LEAD(Time_Stamp) OVER(ORDER BY Time_Stamp), Time_Stamp))
AS Seconds_In_State
FROM Mstate
WHERE DATE(`Time_Stamp`) = CURDATE()
AND TIME(`Time_Stamp`) >= '08:05' /*ShiftStart input tag*/
ORDER BY Time_Stamp) AS T
Where MState = 4;