Avatar billede jthyge Mester
28. april 2021 - 10:35 Der er 2 kommentarer

SQL - Se på foregående værdi, og indregne tiden.

Hej

Jeg 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;
Avatar billede Rune1983 Guru
28. april 2021 - 13:18 #1
Kan det ikke gøres noget ala dette. Ikke testet!

SELECT
m1.Time_Stamp,
TIMESTAMPDIFF(SECOND,m1.Time_Stamp,(SELECT MIN(m2.Time_Stamp) FROM Mstate m2 WHERE m2.MState NOT LIKE 4 AND m2.Time_Stamp > m1.Time_Stamp)) AS 'AntalSekunder'
FROM Mstate m1
WHERE m1.MState = 4
Avatar billede arne_v Ekspert
28. april 2021 - 14:37 #2
Jeg tror at det her er et af de tilfælde hvor en mege simpel SELECT der henter de relevante rækker og så lave beregningen i kode fremfor i SQL vil være en pænere løsning.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester





Premium
Dansk booking-portal ramt af ransomware-angreb: Forhandler med hackere om betaling af løsesum
Selskabet Ak Techotel er ramt af et omfattende hackerangreb, der er gået ud over en lang række hoteller i Danmark, Sverige og Norge. Selskabet har forhandlet med hackerne bag angrebet for igen at få adgang til sine systemer igen.
CIO
Der findes ikke noget vigtigere for din virksomhedskultur end psychological safety
Klumme: Forskningen er entydig: Vidensarbejde er mere effektiv, når du tør stille spørgsmål, rejse kritik og indrømme fejl helt uden frygt for at blive straffet eller gjort til grin. Hvis du ikke har fokus på denne del af din virksomhedskultur, så lever din virksomhed og dine medarbejdere ikke op til deres fulde potentiale.
White paper
Sådan: Ryd forhindringerne af vejen på cloudrejsen
IBM Cloud gør det lettere at lægge kritiske applikationer i skyen eller på en hybrid platform samt bevare kontrol og ejerskab – med fuld understøttelse af SAP og VMware.