User Tools

Site Tools


db_temperatur

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;
db_temperatur.txt · Last modified: 2024/03/11 14:00 by walter