Minimum finden

Mani2803

Benutzer
Beiträge
5
hi,

ich habe eine Tabelle wo man für jedes Jahr jenes Monat mit der kleinsten Temperatur unter den Monaten mit mehr als 150 mm Regenmenge zeigen muss.

gegebene Spalten: Jahr, Monat, tmin(minimale Temperatur), tmax(maximale Temperatur),Regenmenge

Dann hab ichs so geschrieben:

SELECT jahr,monat, tmin FROM Temperatur a

WHERE rain>150

dann bekomme ich alle Jahre, Monate und min. Temperatur wo die Regenmenge >150mm ist.

z.B:
jahr | Monat | tmin
1857 | 7 | 8,2
1866 | 10 | 7,2
1866 | 5. | 3,2
1866 | 3. | 2,9


Wie bekomme ich das Minimum der Temperatur (z.B des Jahres 1866) damit da nur der kleinste Wert da steht(2,9)

Ich habe es mit einer subquery versucht aber diese zeigt wieder dasselbe an:

AND tmin=(SELECT MIN(tmin) FROM Temperatur b WHERE b.tmin=a.tmin )


Mit welchem Befehl bekomme ich das hin?

danke
 
Werbung:
gegebene Spalten: Jahr, Monat, tmin(minimale Temperatur), tmax(maximale Temperatur),Regenmenge

Bitte was?

  • warum zerhackst Du das Datum in 2 Spalten?
  • was speicherst Du in tmin?
  • was speicherst Du in tmax?

Vermutlich willst Du je Tag mehrere Werte von Temperatur und Regenmenge speichern. Was willst Du bei der ersten von N Messungen an einem Tag als tmin/tmax speichern? Kannst Du in die Zukunft schauen und früh um 3 wissen, ob Dein Messwert das tmin/tmax des Tages ist? Warum zertrümmerst Du das Datum in 2 Spalten? Schon mal was von Datentypen gehört?

Mit Deinen Daten:

select * from kaputter_tabelle where jahr = 1866 order by tmin limit 1

Allgemein: das (was Du da machst) ist keine Kunst und kann daher weg.

Tipp: kauf Dir ein Buch zu Datenbank-Grundlagen. Ist bei Dir gut investiert.
 
also nochmal. ich habe eine Tabelle wo alle Temperaturdaten über die Jahre drin stehen.

Aufgabe :

Zeigen Sie für jedes Jahr jenes Monat mit der kleinsten Temperatur unter den Monaten mit mehr als 150 mm Regenmenge. Oben habe ich doch geschrieben, dass tmin(minimale Temperatur) und tmax(max. Temperatur) ist. Wobei tmax hier eigentlich nicht gebraucht wird.

Bitte was?

  • warum zerhackst Du das Datum in 2 Spalten?
  • was speicherst Du in tmin?
  • was speicherst Du in tmax?
.

nein, das bei tmin ist nicht das Datum sondern die Temperatur. ich zerhacke da nichts.DAS IST NICHT DER 8,2 sondern 8,2 Grad Celsius.

jahr | monat | tmin
1866 | 10 |8,2
1866. | 5 |7,2
1866. | 3 |2,9


das sind die minimalen Temperaturen wo die Regenmenge über 150mm ist (im Jahr 1866 und die Monate sind auch gegeben).

Jetzt will ich, dass nur der minimalste Wert (d.h 2,9 Grad Celsius) aus dem Jahr 1866 angezeigt wird und die anderen zwei Zeilen verschwinden. Und das über die ganze Spalte Jahr.

D.h wenn auch im Jahr 1925 fünf Temperaturwerte stehen, will ich, dass aus diesen fünf Temperaturwerten der minimalste ausgewählt wird.
Das habe ich mit einer Subquery versucht, kommt aber wieder das gleiche heraus.
 
Vielleicht stehe ich auf der Leitung aber willst Du das hier?

SELECT jahr,monat, min(tmin)
FROM Temperatur a
WHERE rain>150
GROUP BY jahr,monat
 
Werbung:
das wird mit seinen gezeigten Daten nicht wirklich funktionieren:

  • das Jahr ist mal '1866' und mal '1866.' Werden also Texte sein, und unterschiedlich gezählt.
  • die Werte stehen mit Komma, als Zeichen, daß es Texte sind. Dann sind 17,2 Grad plötzlich kleiner als 9,8. Grad.
 
Zurück
Oben