Sabine: mysql ein Wert pro Stunde

Hallo zusammen,

eigentlich wollte ich schon lange fertig sein, komme aber einfach nicht weiter und hoffe auf eure Hilfe!
In einer mySQL DB habe ich viele Einträge pro Stunden mit timestamp:

timestamp                wert
2013-08-09 00:00:04      20   *
2013-08-09 00:20:04      25
2013-08-09 00:34:03      27
2013-08-09 00:46:01      20
2013-08-09 00:58:08      20
2013-08-09 01:00:04      60   *
2013-08-09 01:23:03      80
2013-08-09 01:31:06      40
2013-08-09 01:42:05      80
2013-08-09 01:55:03      90

Aus dieser Tabelle möchte ich nur den jeweils ersten Eintrag einer Stunde. Also hier im Beispiel die mit "*" markierten Zeilen.

Könnte mir hier jemand helfen?

Tausend Dank für die Hilfe!
LG Sabine

  1. Tach!

    Aus dieser Tabelle möchte ich nur den jeweils ersten Eintrag einer Stunde.

    Gruppiere nach der Stunde (vermutlich Datum und Stunde) und ermittle den Minimalwert vom Timestamp. Mehr geht mit Standard-SQL nicht. MySQL lässt dich zwar auch noch den "wert" selektieren, aber garantiert dabei nicht, dass es ein bestimmer aus der Gruppe ist. Es gibt also nicht unbedingt den zum Minimal-Timestamp passenden "wert".

    Jedenfalls hast du jetzt eine Abfrage für den kleinsten Timestamp pro Stunde. Die kommt in eine Subquery, und die Haupt-Query fragt nach den Datensätzen WHERE timestamp IN (subquery). Das klappt, wenn die Timestamps nicht mehrfach vorkommen. Anderenfalls hast du sowieso ein "Welchen nehmen?"-Problem.

    dedlfix.

    1. ein gutes Beispiel, dass - ohne Ausnahme - jeder Datensatz eine id haben sollte. Beim Timestamp könnten in einer Sekunde mehrere Datensätze anfallen. Welcher wäre jetzt der erste? Im Nachhinein nicht mehr rekonstruierbar.

      Gast

      1. Tach!

        ein gutes Beispiel, dass - ohne Ausnahme - jeder Datensatz eine id haben sollte. Beim Timestamp könnten in einer Sekunde mehrere Datensätze anfallen. Welcher wäre jetzt der erste? Im Nachhinein nicht mehr rekonstruierbar.

        IDs garantieren die theoretisch keine Reihenfolge, auch wenn sie praktisch meist aufsteigend vergeben wurden.

        dedlfix.

        1. Genau, ID -> IDentifikation.

          Wenn du aus Sicht des Anwendungsfalles einen "ersten" Datensatz pro Stunde identifizieren kannst, dir in der Datenbank aber dafür die notwendigen Kriterien nicht zur Verfügung stehen, dann hast du beim Design etwas gehörig falsch gemacht. Gehe zurück auf START und ziehe nicht DM 4000 ein!

          Eine automatisch vergebener, immer fortschreitend aufsteigender Zahlenwert als ID Spalte ist einfach nur Mittel zum Zweck, unter Umständen ein durchaus probates Mittel, aber das hängt von den jeweiligen Anforderungen ab.

          Cheers, FF