Temperaturauswertung mit Datenbank
Die heißen Tage haben mich inspiriert, die gemessenen heißen Tage und Tropennächte zu ermitteln. Die Datenbank enthält folgende relevanten Felder:
TIME TIMESTAMP, temperature FLOAT(4,2)
Ermittlung der Sommertage: Bedingung: T(max) ≥ 25 °C
SELECT COUNT(*) AS Anzahl FROM ( SELECT * FROM outdoor WHERE YEAR(TIME)=2018 GROUP BY DATE(TIME) HAVING MAX(temperature) >= 25.0 ) AS tmp";
Ermittlung der Hitzetage: Bedingung: T(max) ≥ 30 °C
HAVING MAX(temperature) >= 30.0
Ermittlung der Wüstentage: Bedingung: T(max) ≥ 35 °C
HAVING MAX(temperature) >= 35.0
Ermittlung der Frosttage: Bedingung: T(min) < 0 °C
HAVING MIN(temperature) < 0.0
Ermittlung der Eistage: Bedingung: T(max) < 0 °C
HAVING MAX(temperature) < 0.0
Ermittlung der Tropennächte:
Bedingung: T(min) ≥ 20 °C für den Zeitraum 18.00 - 6:00 Uhr. Die Abfrage ist etwas schwieriger, da Werte zu unterschiedlichen Tagen zusammengefasst werden müssen. Die Idee ist: Ändere temporär für die Werte zwischen 0 und 6 Uhr das Datum um -1, fasse dann alle Zeiten für einen Tag zwischen 18 - 24 Uhr und 0- 6 Uhr zu einer Gruppe zusammen.
SELECT COUNT(*) AS Anzahl FROM ( SELECT (CASE WHEN HOUR(TIME) BETWEEN 0 AND 5 THEN DATE_ADD(TIME, INTERVAL -1 DAY) ELSE TIME END) AS zeit FROM outdoor WHERE YEAR(TIME)=2018 AND ( HOUR(TIME) BETWEEN 18 AND 23 OR HOUR(TIME) BETWEEN 0 AND 5 ) GROUP BY DATE(CASE WHEN HOUR(TIME) BETWEEN 0 AND 5 THEN DATE_ADD(TIME, INTERVAL -1 DAY) ELSE TIME END) HAVING MIN(temperature) >= 20.0 ) AS tmp;