SELECT Datum gruppieren in Stunden
Hallo,
ich wähle aus meiner DB Werte der letzten 2 Stunden aus um diese in Form einer Statistik auszugeben.
Ich habe ca für alle 5min einen Eintrag. Der Wert kann varieren. Nun möchte ich ca. jede 30min oder in einen Stundenschritt den Maximalwert haben.
Den Maximalwert zu bestimmen ist kein Problem, gibt ja MAX.
Nun weiß ich nicht wie ich das mit dem Datum lösen kann.
Die Spalte "date" ist im Format: 0000-00-00 00:00:00
Bisher sieht das dann so aus
Ich könnte es auch mit PHP "sortieren". Aber vielleicht weiß jemand wie ich das mit SQl machen kann.
Es müsste dann so aussehen das z.B 17:31 zu 17:30 gruppiert wird, bis 17:44.
17:45 wird dann zu 18Uhr grupiert etc. Genauso dann 15:14 dann zu 15:00.
Ich hoffe ich konnte es einiger maßen gut erklären.
Ich hoffe das jemand mir weiterhelfen kann.
ich wähle aus meiner DB Werte der letzten 2 Stunden aus um diese in Form einer Statistik auszugeben.
Ich habe ca für alle 5min einen Eintrag. Der Wert kann varieren. Nun möchte ich ca. jede 30min oder in einen Stundenschritt den Maximalwert haben.
Den Maximalwert zu bestimmen ist kein Problem, gibt ja MAX.
Nun weiß ich nicht wie ich das mit dem Datum lösen kann.
Die Spalte "date" ist im Format: 0000-00-00 00:00:00
Bisher sieht das dann so aus
SELECT date, MAX(wert) FROM `Tabelle`
WHERE DATE_SUB(CURDATE(),INTERVAL 2 DAY) <= date
GROUB BY (Hier müsste ich dann die Zeit gruppieren)
Ich könnte es auch mit PHP "sortieren". Aber vielleicht weiß jemand wie ich das mit SQl machen kann.
Es müsste dann so aussehen das z.B 17:31 zu 17:30 gruppiert wird, bis 17:44.
17:45 wird dann zu 18Uhr grupiert etc. Genauso dann 15:14 dann zu 15:00.
Ich hoffe ich konnte es einiger maßen gut erklären.
Ich hoffe das jemand mir weiterhelfen kann.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 166181
Url: https://administrator.de/contentid/166181
Ausgedruckt am: 24.11.2024 um 17:11 Uhr
2 Kommentare
Neuester Kommentar
Moin EvilMoe,
in SQL bin ich auch nicht so fit, aber ich würde es in der GROUP BY-Clause so versuchen:
...wenn eine Differenzierung nach Stunden reicht.
Wenn es feiner sein soll, hier für Halbstundentakt:
Wenn es noch feiner sein soll, hier für Viertelstundentakt:
ungetestet
Grüße
Biber
in SQL bin ich auch nicht so fit, aber ich würde es in der GROUP BY-Clause so versuchen:
...
GROUP BY DATE( deinDatumsfeld), HOUR( TIME( deinDatumsfeld) )
Wenn es feiner sein soll, hier für Halbstundentakt:
...
GROUP BY DATE( deinDatumsfeld), HOUR( TIME( deinDatumsfeld) ) , CASE WHEN MINUTE( TIME( deinDatumsfeld) ) < 30 THEN 1 ELSE 2 END
Wenn es noch feiner sein soll, hier für Viertelstundentakt:
...
GROUP BY DATE( deinDatumsfeld), HOUR( TIME( deinDatumsfeld) ) ,
CASE WHEN MINUTE( TIME( deinDatumsfeld) ) < 15 THEN 1
CASE WHEN MINUTE( TIME( deinDatumsfeld) ) < 30 THEN 2
CASE WHEN MINUTE( TIME( deinDatumsfeld) ) < 45 THEN 3
ELSE 4
END
ungetestet
Grüße
Biber