Betriebsstunden

digidax

Benutzer
Beiträge
11
Einen schönen Nachmittag zusammen,

ich habe folgende Tabelle vorliegen:

+---------------------+--------+
| stempel | status |
+---------------------+--------+
| 2019-03-18 10:38:44 | 1 |
| 2019-03-18 10:39:59 | 2 |
| 2019-03-18 10:42:34 | 1 |
| 2019-03-18 10:58:09 | 2 |
| 2019-03-18 12:50:27 | 1 |
| 2019-03-18 14:28:12 | 2 |
| 2019-03-18 14:30:58 | 1 |
| 2019-03-18 14:43:54 | 2 |
| 2019-03-18 14:44:36 | 1 |
| 2019-03-18 14:51:55 | 2 |
+---------------------+--------+

der Status 1 steht für Maschine angehalten, Status 2 für Maschine gestartet.
Ich suche nun ein Statement, welches mit ausgibt, wie lange am heutigen Tag die Maschine lief.

Demnach müßte also die Summe über die Differenzen der Zeit ermittelt werden, die bei einem Statuswechsel von 2 auf 1 erfolgt. Kann man das ohne Trigger realisieren?

Vielen Dank für Eure Hilfe,
Frank
 
Werbung:
Werbung:
Mir ist die Syntax von MySQL da eher fremd. Es müsste auch ohne Window-Funktionen gehen:
Code:
SELECT   *,
       datediff(zeiteinheit,t1.stempel,t2.stempel) AS laufzeit
FROM   (

SELECT   t1.stempel AS start,
       min(t2.stempel) AS stop
FROM   tabelle t1
INNER JOIN tabelle t2
ON       t2.status = 1
AND       t1.stempel < t2.stempel
WHERE   t1.status = 2
GROUP BY t1.stempel

       ) t
Das ist natürlich fehleranfällig wenn mal eine Start oder Stopzeit fehlt, da kommt dann schnell Grütze ;-)
 
Zurück
Oben