Ludwigmller
SQL-Guru
- Beiträge
- 172
Moin,
ich möchte gerne die Laufzeiten einer Maschine erfassen. Dazu steht mir leider nur eine Logfile zur Verfügung in der der "ON"/"OFF" Status mit Uhrzeit protokolliert wird.
Daraus möchte ich Anzahl von Gesamtlaufzeit pro Tag (0-24 Uhr), Anzahl an Takten pro Tag, durchschnittliche min/Takt ermitteln.
Sollte ich ON und OFF mit der Uhrzeit in einer Tabelle speichern und die gewünschten drei Größen per Abfrage ermitteln?
Hier mal ein Beispiel, wie meine Idee für die Datenmodellierung wäre.
In diesem Beispiel, wären die gewünschten Ergebnisse:
Maschine 1: Takte: 3, Taktlänge: 10 min, Laufzeit: 40 min/24h
Maschine 2: Takte: 1, Taktlänge: 30 min, Laufzeit: 30 min
Maschine 3: Takte: 0, Taktlänge: 0 min, Laufzeit: 0 min
Es soll möglichst PostgreSQL genutzt werden.
ich möchte gerne die Laufzeiten einer Maschine erfassen. Dazu steht mir leider nur eine Logfile zur Verfügung in der der "ON"/"OFF" Status mit Uhrzeit protokolliert wird.
Daraus möchte ich Anzahl von Gesamtlaufzeit pro Tag (0-24 Uhr), Anzahl an Takten pro Tag, durchschnittliche min/Takt ermitteln.
Sollte ich ON und OFF mit der Uhrzeit in einer Tabelle speichern und die gewünschten drei Größen per Abfrage ermitteln?
Hier mal ein Beispiel, wie meine Idee für die Datenmodellierung wäre.
Code:
create table maschinen (
id integer primary key,
bezeichnung varchar(30)
);
create table start_stop (
id serial primary key,
zeitstempel timestamp,
status integer, /* 0: OFF, 1: ON */
id_maschine integer,
CONSTRAINT fk_maschine
FOREIGN KEY (id_maschine)
REFERENCES maschinen(id)
);
insert into maschinen (id, bezeichnung) values
(1, 'Maschine 1'),
(2, 'Maschine 2'),
(3, 'Maschine 3');
insert into start_stop (zeitstempel, status, id_maschine) VALUES
('2022-01-15 01:00:00', 1, 1),
('2022-01-15 01:10:00', 0, 1),
('2022-01-15 02:00:00', 1, 1),
('2022-01-15 02:20:00', 0, 1),
('2022-01-15 03:00:00', 1, 1),
('2022-01-15 03:10:00', 0, 1),
('2022-01-15 01:30:00', 1, 2),
('2022-01-15 02:00:00', 0, 2);
select * from start_stop;
In diesem Beispiel, wären die gewünschten Ergebnisse:
Maschine 1: Takte: 3, Taktlänge: 10 min, Laufzeit: 40 min/24h
Maschine 2: Takte: 1, Taktlänge: 30 min, Laufzeit: 30 min
Maschine 3: Takte: 0, Taktlänge: 0 min, Laufzeit: 0 min
Es soll möglichst PostgreSQL genutzt werden.