Ich möchte Logdaten auswerten. Diese liegen mit einem Timestamp vor und werden alle 30 Sekunden gespeichert. Genau gesagt, geht es um Stromdaten einer PV-Anlage. Ich möchte ermitteln wie viel Strom ich in der Nacht aus dem Netz zukaufe. Ich möchte den die Summe der zugekaufte Strommenge im Zeitraum von heute Morgen um 06:00 und gestern Abend um 18:00 berechnen. Das ganze soll dann pro Tag gruppiert ausgegeben werden. Ich habe die Abfrage mit Beispieldaten nachgestellt.
Das Problem ist, dass aufgrund der Gruppierung nach dem Datum die Summe nur zwischen Heut 06:00 und Heute 00:00 gebildet wird.
Wie muss ich die Abfrage gestalten, damit die Summe korrekt bis zum Vortag um 18:00 gebildet wird?
Gruss
Martin
SQL:
CREATE TABLE public.test (
logtime timestamp without time zone,
logdata smallint
);
insert into test (logtime, logdata) values ('2024-06-20 19:00:00', 2);
insert into test (logtime, logdata) values ('2024-06-20 19:30:00', 3);
insert into test (logtime, logdata) values ('2024-06-20 23:59:00', 5);
insert into test (logtime, logdata) values ('2024-06-21 02:30:00', 1);
insert into test (logtime, logdata) values ('2024-06-21 04:30:00', 4);
insert into test (logtime, logdata) values ('2024-06-21 05:59:00', 10);
insert into test (logtime, logdata) values ('2024-06-21 19:00:00', 2);
insert into test (logtime, logdata) values ('2024-06-21 19:30:00', 3);
insert into test (logtime, logdata) values ('2024-06-21 23:59:00', 5);
insert into test (logtime, logdata) values ('2024-06-22 02:30:00', 3);
insert into test (logtime, logdata) values ('2024-06-22 04:30:00', 7);
insert into test (logtime, logdata) values ('2024-06-22 05:59:00', 10);
select
sum(logdata)
from
test
where
logtime between (logtime::date||' 06:00:00')::timestamp - interval '12 hours' and (logtime::date||' 06:00:00')::timestamp
group by
logtime::date;
Das Problem ist, dass aufgrund der Gruppierung nach dem Datum die Summe nur zwischen Heut 06:00 und Heute 00:00 gebildet wird.
Code:
logtime;sum
2024-06-21;15
2024-06-22;20
Wie muss ich die Abfrage gestalten, damit die Summe korrekt bis zum Vortag um 18:00 gebildet wird?
Gruss
Martin