SQL-Abfrage: (SCHWER) Anzahl der gemittelten Zahlenwerte Abfragen und wenn gleich 12 dann mit aufnehmen
Diese Frage zu stellen ist nicht sehr einfach. Ich hoffe ich kann es verständlich erklären.
Ich habe eine Tabelle mit Messwerten.
Die wie folgt aussieht:
Tabelle heißt: Messwerte_Temp_70_15
STATIONS_ID ;MESS_DATUM_BEGINN ;MESS_DATUM_ENDE ;QUALITAETS_NIVEAU ;ART ;LUFTTEMPERATUR_MAXIMUM ;LUFTTEMPERATUR ;LUFTTEMPERATUR_MINIMUM ;WINDSTAERKE ;BEDECKUNGSGRAD ;SONNENSCHEINDAUER ;NIEDERSCHLAGSHOEHE ;max(LUFTTEMPERATUR_MAXIMUM) ;min(LUFTTEMPERATUR_MINIMUM) ;max(WINDSPITZE_MAXIMUM) ;max(NIEDERSCHLAGSHOEHE)
1 19370101 19370131 5 1 3.3 0.0 -2.5 2.3 5.04 -999.0 42.1 9.5 -7.5 -999.0 11.5
1 19370201 19370228 5 1 5.3 2.3 -0.4 2.6 6.16 -999.0 87.6 14.4 -5.7 -999.0 13.6
1 19370301 19370331 5 1 7.3 3.1 0.1 2.4 5.28 -999.0 112.3 13.2 -5.4 -999.0 39.1
1 19370401 19370430 5 1 12.4 7.9 3.9 2.2 5.2 -999.0 74.1 18.0 -0.6 -999.0 28.2
1 19370501 19370531 5 1 20.7 14.5 8.6 1.6 3.92 -999.0 89.9 28.2 2.2 -999.0 25.0
1 19370601 19370630 5 1 23.2 17.1 11.4 1.3 3.92 -999.0 83.4 32.8 4.6 -999.0 17.2
1 19370701 19370731 5 1 23.6 17.7 11.7 1.3 4.24 -999.0 39.2 29.6 5.7 -999.0 16.6
1 19370801 19370831 5 1 23.9 17.3 12.2 1.4 4.32 -999.0 73.4 32.8 7.4 -999.0 15.9
1 19370901 19370930 5 1 18.4 12.7 9.1 1.2 4.64 -999.0 138.6 28.6 4.2 -999.0 21.2
1 19371001 19371031 5 1 13.7 8.8 4.8 1.1 5.04 -999.0 26.6 25.0 -1.2 -999.0 7.0
1 19371101 19371130 5 1 6.4 3.0 0.3 1.3 5.36 -999.0 28.2 11.0 -5.4 -999.0 9.6
1 19371201 19371231 5 1 1.3 -1.4 -3.5 1.5 6.24 -999.0 21.1 5.0 -11.0 -999.0 4.6
1 19380101 19380131 5 1 2.8 0.1 -2.3 1.6 6.8 -999.0 93.3 10.2 -13.0 -999.0 11.8
1 19380201 19380228 5 1 4.0 -0.1 -3.3 1.9 4.88 -999.0 22.1 10.0 -7.0 -999.0 9.5
1 19380301 19380331 5 1 14.7 7.4 1.4 1.2 2.0 -999.0 7.1 19.6 -3.6 -999.0 4.7
1197 19730101 19730131 5 1 0.8 -1.2 -3.7 0.9 6.72 9.3 20.7 5.5 -9.0 -999.0 8.2
5107 19910901 19910930 10 1 19.4 13.3 8.0 1.8 4.0 -999.0 50.4 26.2 2.7 -999.0 18.8
Mein Ziel ist es zu einer Station einen Jahresmittelwert der Temperatur zu erstellen und Lufttemperaturwerte = -999
raus zu filtern und nach Stations_ID zu sortieren.
MEINE ABFRAGE BIS JETZT:
SELECT STATIONS_ID, MESS_DATUM_BEGINN, MESS_DATUM_ENDE,
ROUND(AVG(LUFTTEMPERATUR),3) AS Lufttemperatur,
COUNT(*)/2 AS Anzahl_Monate
FROM Messwerte_Temp_70_15
WHERE MESS_DATUM_BEGINN LIKE '2000%' AND LUFTTEMPERATUR IS NOT '-999'
GROUP BY STATIONS_ID
Daraus resultiert diese Tabelle:
STATIONS_ID MESS_DATUM_BEGINN MESS_DATUM_ENDE Lufttemperatur Anzahl_Monate
71 20001201 20001231 8.6 12
238 20001201 20001231 9.375 12
257 20001201 20001231 10.783 12
259 20001201 20001231 10.858 12
576 20001201 20001231 9.708 12
706 20001201 20001231 11.558 12
710 20001201 20001231 10.858 12
3268 20001001 20001031 12.725 4
3402 20001201 20001231 8.175 12
3603 20001201 20001231 11.333 3
4719 20000601 20000630 7.85 4
JETZT KOMMT DER ENTSCHEIDENDE PUNKT!!!
Ich möchte Jahresmittelwerte nicht aufnehmen die unvollständig sind. Also will ich nur Werte haben die zur Mittelwertberechnung 12 Werte gemittelt wurden(Anzahl_Monate). Wie kann ich in dieser Abfrage noch zusätzlich diese Zeilen eliminieren(Alle unter 12). WICHTIG: ES SOLL IN DIESER EINEN ABFRAGE GESCHEHEN. UND NICHT IN EINER ZUSÄTZLICHEN!
Hoffe das ganze war einigermaßen verständlich.
Ich habe eine Tabelle mit Messwerten.
Die wie folgt aussieht:
Tabelle heißt: Messwerte_Temp_70_15
STATIONS_ID ;MESS_DATUM_BEGINN ;MESS_DATUM_ENDE ;QUALITAETS_NIVEAU ;ART ;LUFTTEMPERATUR_MAXIMUM ;LUFTTEMPERATUR ;LUFTTEMPERATUR_MINIMUM ;WINDSTAERKE ;BEDECKUNGSGRAD ;SONNENSCHEINDAUER ;NIEDERSCHLAGSHOEHE ;max(LUFTTEMPERATUR_MAXIMUM) ;min(LUFTTEMPERATUR_MINIMUM) ;max(WINDSPITZE_MAXIMUM) ;max(NIEDERSCHLAGSHOEHE)
1 19370101 19370131 5 1 3.3 0.0 -2.5 2.3 5.04 -999.0 42.1 9.5 -7.5 -999.0 11.5
1 19370201 19370228 5 1 5.3 2.3 -0.4 2.6 6.16 -999.0 87.6 14.4 -5.7 -999.0 13.6
1 19370301 19370331 5 1 7.3 3.1 0.1 2.4 5.28 -999.0 112.3 13.2 -5.4 -999.0 39.1
1 19370401 19370430 5 1 12.4 7.9 3.9 2.2 5.2 -999.0 74.1 18.0 -0.6 -999.0 28.2
1 19370501 19370531 5 1 20.7 14.5 8.6 1.6 3.92 -999.0 89.9 28.2 2.2 -999.0 25.0
1 19370601 19370630 5 1 23.2 17.1 11.4 1.3 3.92 -999.0 83.4 32.8 4.6 -999.0 17.2
1 19370701 19370731 5 1 23.6 17.7 11.7 1.3 4.24 -999.0 39.2 29.6 5.7 -999.0 16.6
1 19370801 19370831 5 1 23.9 17.3 12.2 1.4 4.32 -999.0 73.4 32.8 7.4 -999.0 15.9
1 19370901 19370930 5 1 18.4 12.7 9.1 1.2 4.64 -999.0 138.6 28.6 4.2 -999.0 21.2
1 19371001 19371031 5 1 13.7 8.8 4.8 1.1 5.04 -999.0 26.6 25.0 -1.2 -999.0 7.0
1 19371101 19371130 5 1 6.4 3.0 0.3 1.3 5.36 -999.0 28.2 11.0 -5.4 -999.0 9.6
1 19371201 19371231 5 1 1.3 -1.4 -3.5 1.5 6.24 -999.0 21.1 5.0 -11.0 -999.0 4.6
1 19380101 19380131 5 1 2.8 0.1 -2.3 1.6 6.8 -999.0 93.3 10.2 -13.0 -999.0 11.8
1 19380201 19380228 5 1 4.0 -0.1 -3.3 1.9 4.88 -999.0 22.1 10.0 -7.0 -999.0 9.5
1 19380301 19380331 5 1 14.7 7.4 1.4 1.2 2.0 -999.0 7.1 19.6 -3.6 -999.0 4.7
1197 19730101 19730131 5 1 0.8 -1.2 -3.7 0.9 6.72 9.3 20.7 5.5 -9.0 -999.0 8.2
5107 19910901 19910930 10 1 19.4 13.3 8.0 1.8 4.0 -999.0 50.4 26.2 2.7 -999.0 18.8
Mein Ziel ist es zu einer Station einen Jahresmittelwert der Temperatur zu erstellen und Lufttemperaturwerte = -999
raus zu filtern und nach Stations_ID zu sortieren.
MEINE ABFRAGE BIS JETZT:
SELECT STATIONS_ID, MESS_DATUM_BEGINN, MESS_DATUM_ENDE,
ROUND(AVG(LUFTTEMPERATUR),3) AS Lufttemperatur,
COUNT(*)/2 AS Anzahl_Monate
FROM Messwerte_Temp_70_15
WHERE MESS_DATUM_BEGINN LIKE '2000%' AND LUFTTEMPERATUR IS NOT '-999'
GROUP BY STATIONS_ID
Daraus resultiert diese Tabelle:
STATIONS_ID MESS_DATUM_BEGINN MESS_DATUM_ENDE Lufttemperatur Anzahl_Monate
71 20001201 20001231 8.6 12
238 20001201 20001231 9.375 12
257 20001201 20001231 10.783 12
259 20001201 20001231 10.858 12
576 20001201 20001231 9.708 12
706 20001201 20001231 11.558 12
710 20001201 20001231 10.858 12
3268 20001001 20001031 12.725 4
3402 20001201 20001231 8.175 12
3603 20001201 20001231 11.333 3
4719 20000601 20000630 7.85 4
JETZT KOMMT DER ENTSCHEIDENDE PUNKT!!!
Ich möchte Jahresmittelwerte nicht aufnehmen die unvollständig sind. Also will ich nur Werte haben die zur Mittelwertberechnung 12 Werte gemittelt wurden(Anzahl_Monate). Wie kann ich in dieser Abfrage noch zusätzlich diese Zeilen eliminieren(Alle unter 12). WICHTIG: ES SOLL IN DIESER EINEN ABFRAGE GESCHEHEN. UND NICHT IN EINER ZUSÄTZLICHEN!
Hoffe das ganze war einigermaßen verständlich.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 291815
Url: https://administrator.de/forum/sql-abfrage-schwer-anzahl-der-gemittelten-zahlenwerte-abfragen-und-wenn-gleich-12-dann-mit-aufnehmen-291815.html
Ausgedruckt am: 10.05.2025 um 17:05 Uhr
4 Kommentare
Neuester Kommentar
Hallo,
suchst Du etwas in der Art?:
Gruß
Friemler
suchst Du etwas in der Art?:
SELECT STATIONS_ID AS IdStation,
SUBSTRING(MESS_DATUM_BEGINN, 1, 4) AS Jahr,
ROUND(AVG(LUFTTEMPERATUR), 3) AS MittlereLufttemperatur
FROM Messwerte_Temp_70_15
WHERE LUFTTEMPERATUR <> -999
GROUP BY STATIONS_ID,
SUBSTRING(MESS_DATUM_BEGINN, 1, 4)
HAVING COUNT(*) = 12
ORDER BY IdStation,
Jahr
Gruß
Friemler