SQL MYSQL abfrage MIN

Andyyyy

Newbie
Registriert
Jan. 2013
Beiträge
4
Hallo Leute,

Schreibe in eine Database alle 2 Min. einen Temperaturwert.
Nun würde ich gerne für jeden Tag den MIN wert anzeigen lassen.

Wie soll die Abfrage aussehen ??

lg, Andyyyy
 
Welche infos sind denn nötig ?
die Tabelle heisst TEMP und es gibt die spalten TIMESTAMP und TAUSSEN, braucht man mehr info ?
 
Na es geht mit
SELECT MIN(TAUSSEN) FROM TEMP WHERE TIMESTAMP LIKE %2013-01-10%

Beim Timestamp schauen wie es dort genau aussieht und dann in die MySQL Referenz schauen (z.B. Online) wie man auf Datum filtert. Mein Beispielcode wird so nicht laufen, vermute ich.

[Nachtrag]
Ich hab jetzt sogar noch ein bisschen für dich geschaut. Schau mal hier (http://www.daniweb.com/web-developm...reads/53025/mysql-select-rows-in-a-date-range). Dort gibt es einige Beispiele für sowas, ich weiß jedoch nicht ob es einen Unterschied in der Auswahl zwishcen Date und Timestamp gibt.

Hier die zugehörige MySQL Referenz (http://dev.mysql.com/doc/refman/5.6/en/date-and-time-functions.html) um via DATE_FORMAT() zu filtern (z.B. WHERE DATE_FORMAT(TIMESTAMP, '%Y-%m-%e') = '2013-01-10'.
 
Zuletzt bearbeitet:
Ich beginne gerade, mich mit SQL/Access auseinanderzusetzen (völliger Anfänger) und hake mich einfach mal in den Thread ein:

Würde ein

Group by "Datum"
Having Min(Temp)

vom Ansatz auch funktionieren?



Edit:
Oops, wahrscheinlich bekäme man damit nur genau einen Wert ausgegeben...?


()
 
Zuletzt bearbeitet von einem Moderator:
Ohne mir jetzt im Detail zu überlegen wie viele Datensätze du mit deiner Abfrage erhalten würdest, wäre die Abfrage nur unter speziellen Situationen sinnvoll.

Was genau willst du Abfragen? Das Datum wo eine unbekannte Minimaltemperatur geherrscht hat? Dann mach ein z.B. ein
SELECT DISTINCT Datum FROM Tabelle WHERE Temp = (SELECT MIN(Temp) FROM Tabelle)

Mit DISTINCT werden die Ergebnisse d.h. hier die angezeigten Datums zusammen gekürzt d.h. doppelte fallen raus. Das Temp = (SQL Abfrage) ist zwar nicht unbedingt das effizienteste Konstrukt, aber definitiv einfach zu bauen.

Ob es viel besser/schneller/etc gehen würde könnte man sich überlegen, in vielen Fällen ist es aber nicht so Zeitkritisch das es wirklich die "Beste" Abfrage sein muss, solange man nicht komplett heftig verschachtelt etc.
 
Zuletzt bearbeitet:
Hallo andy_0,

muss für ein Kalenderjahr jeweils den MIN wert jeden Tages anzeigen...
 
Hmm. Das lies sich aus deinen zwei Zeilen am Eingangspost nicht herauslesen.

Wie man auf Jahr filtert weißt du ja jetzt (DATE_FORMAT nur mit Y). Was du vermutlich benötigst sind GROUP und HAVING Befehle wie sie Chattermark() einsetzen wollte. Ohne es an der Datenbank auszuprobieren kann ich dir jetzt auf Anhieb kein SQL Code liefern. Schau dir mal hier (http://www.w3schools.com/sql/sql_groupby.asp) die GROUP und HAVING Syntax an.

Den Text lesen und dann versuchen es für deine Tabelle umzusetzen. Im SQL Server kann man meiner Meinung nach sehr gut lernen, da man Schritt für Schritt seine Abfrage erweitern kann und sofort sieht was passiert, wenn man systematisch vorgeht.
 
Zuletzt bearbeitet: (Am besten mit GROUP anfangen)
SELECT DATE(timestamp) AS date, MIN(tprimaer) AS tprimaermin, MAX(tprimaer) AS tprimaermaxg FROM vitotemp GROUP BY date ORDER BY date DESC LIMIT 365

Brachte mir den Erfolg, danke.

lg, Andyyyy
 
Zurück
Oben