1. Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm
    Information ausblenden

Hilfe mit MIN() und MAX()

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Kornelius777, 28 April 2019.

  1. Kornelius777

    Kornelius777 Neuer Benutzer

    Hallo Leute,

    ich verzweifle gerade mit MIN() und MAX().
    Meine Tabelle sieht so aus:

    Code:
    +---------------------+------------+---------+------------+---------+-------+------+
    | TIMESTAMP           | DEVICE     | TYPE    | EVENT      | READING | VALUE | UNIT |
    +---------------------+------------+---------+------------+---------+-------+------+
    | 2019-04-27 00:09:41 | OUT.Wetter | WEATHER | temp_c: 7  | temp_c  | 7     |      |
    | 2019-04-27 00:44:48 | OUT.Wetter | WEATHER | temp_c: 8  | temp_c  | 8     |      |
    | 2019-04-27 01:44:59 | OUT.Wetter | WEATHER | temp_c: 6  | temp_c  | 6     |      |
    | 2019-04-27 02:45:11 | OUT.Wetter | WEATHER | temp_c: 8  | temp_c  | 8     |      |
    | 2019-04-27 03:30:34 | OUT.Wetter | WEATHER | temp_c: 7  | temp_c  | 7     |      |
    | 2019-04-27 03:40:36 | OUT.Wetter | WEATHER | temp_c: 8  | temp_c  | 8     |      |
    | 2019-04-27 04:40:43 | OUT.Wetter | WEATHER | temp_c: 7  | temp_c  | 7     |      |
    | 2019-04-27 07:21:14 | OUT.Wetter | WEATHER | temp_c: 8  | temp_c  | 8     |      |
    | 2019-04-27 07:41:17 | OUT.Wetter | WEATHER | temp_c: 7  | temp_c  | 7     |      |
    | 2019-04-27 08:31:27 | OUT.Wetter | WEATHER | temp_c: 8  | temp_c  | 8     |      |
    | 2019-04-27 10:41:52 | OUT.Wetter | WEATHER | temp_c: 9  | temp_c  | 9     |      |
    | 2019-04-27 11:27:00 | OUT.Wetter | WEATHER | temp_c: 8  | temp_c  | 8     |      |
    | 2019-04-27 11:42:03 | OUT.Wetter | WEATHER | temp_c: 9  | temp_c  | 9     |      |
    | 2019-04-27 12:42:15 | OUT.Wetter | WEATHER | temp_c: 7  | temp_c  | 7     |      |
    | 2019-04-27 13:17:21 | OUT.Wetter | WEATHER | temp_c: 8  | temp_c  | 8     |      |
    | 2019-04-27 13:42:26 | OUT.Wetter | WEATHER | temp_c: 7  | temp_c  | 7     |      |
    | 2019-04-27 14:37:37 | OUT.Wetter | WEATHER | temp_c: 8  | temp_c  | 8     |      |
    | 2019-04-27 15:07:43 | OUT.Wetter | WEATHER | temp_c: 9  | temp_c  | 9     |      |
    | 2019-04-27 16:38:00 | OUT.Wetter | WEATHER | temp_c: 8  | temp_c  | 8     |      |
    | 2019-04-27 16:43:01 | OUT.Wetter | WEATHER | temp_c: 10 | temp_c  | 10    |      |
    | 2019-04-27 17:43:12 | OUT.Wetter | WEATHER | temp_c: 9  | temp_c  | 9     |      |
    | 2019-04-27 19:33:33 | OUT.Wetter | WEATHER | temp_c: 8  | temp_c  | 8     |      |
    | 2019-04-27 19:38:34 | OUT.Wetter | WEATHER | temp_c: 9  | temp_c  | 9     |      |
    | 2019-04-27 19:43:35 | OUT.Wetter | WEATHER | temp_c: 8  | temp_c  | 8     |      |
    | 2019-04-27 20:43:47 | OUT.Wetter | WEATHER | temp_c: 9  | temp_c  | 9     |      |
    | 2019-04-27 20:53:49 | OUT.Wetter | WEATHER | temp_c: 8  | temp_c  | 8     |      |
    | 2019-04-27 21:43:58 | OUT.Wetter | WEATHER | temp_c: 7  | temp_c  | 7     |      |
    | 2019-04-27 22:14:04 | OUT.Wetter | WEATHER | temp_c: 6  | temp_c  | 6     |      |
    | 2019-04-27 22:44:10 | OUT.Wetter | WEATHER | temp_c: 7  | temp_c  | 7     |      |
    | 2019-04-27 23:04:14 | OUT.Wetter | WEATHER | temp_c: 6  | temp_c  | 6     |      |
    | 2019-04-27 23:44:21 | OUT.Wetter | WEATHER | temp_c: 7  | temp_c  | 7     |      |
    +---------------------+------------+---------+------------+---------+-------+------+
    Wenn ich jetzt aber abfrage:
    Code:
    SELECT MIN(VALUE),MAX(VALUE) FROM `history` WHERE `TIMESTAMP` LIKE '%2019-04-27 %:%:%%' AND `READING`='temp_c' ;
    Dann bekomme ich raus:
    Code:
    +------------+------------+
    | MIN(VALUE) | MAX(VALUE) |
    +------------+------------+
    | 10         | 9          |
    +------------+------------+
    
    Was mache ich denn falsch?
    Hat jemand einen Tipp?

    Danke Euch!

    Grüße!

    Kornelius
     
  2. akretschmer

    akretschmer Datenbank-Guru

    falsche Datentypen.
     
  3. akretschmer

    akretschmer Datenbank-Guru

    um das Problem noch einmal bildhaft zu zeigen:

    Code:
    test=*# with t as (select '9' as zahl union select '10') select * from t order by zahl;
     zahl
    ------
     10
     9
    (2 rows)
    
    test=*# with t as (select '9'::int as zahl union select '10'::int) select * from t order by zahl;
     zahl
    ------
        9
       10
    (2 rows)
    
    test=*# 
    
    --
    -- oder auch
    --
    
    test=*# with t as (select '9' as zahl union select '10') select min(zahl), max(zahl) from t ;
     min | max
    -----+-----
     10  | 9
    (1 row)
    
    test=*# with t as (select '9'::int as zahl union select '10'::int) select min(zahl), max(zahl) from t ;
     min | max
    -----+-----
       9 |  10
    (1 row)
    
    
     
  4. Kornelius777

    Kornelius777 Neuer Benutzer

    Hmpf. Danke.

    Hast du einen Tipp, wie ich das in den Griff bekomme?
    Wie müsste die Query lauten?

    Danke Dir!
     
  5. akretschmer

    akretschmer Datenbank-Guru

    Die Abfrage ist prinzipiell korrekt. Nicht aber die Datentypen.

    Sagte ich schon, daß es an den Datentypen liegt?

    Ach ja, Du verwendest falsche Datentypen.



    Ist das nun angekommen?
     
  6. Kornelius777

    Kornelius777 Neuer Benutzer

    Danke. Das hatte ich verstanden.
    Leider ist die Tabelle vorgegeben.
    Ich möchte gerne die Abfrage so gestalten, dass ich den Max- und Min.-Wert angezeigt bekomme.
    Hast Du einen konkreten Hinweis, was ich in der Query verändern muss?
     
  7. akretschmer

    akretschmer Datenbank-Guru

    dann caste halt. Und mittelfristig wirf das weg, weil das fällt die sehr schnell schmerzhaft auf die Füße.
     
    Walter gefällt das.
  8. Kornelius777

    Kornelius777 Neuer Benutzer

  9. Thomas330

    Thomas330 Benutzer

    Hallo kornelius777, probier doch mal das:

    Select max(value*1), min(value*1)...

    Ist zwar auch nur 'ne Krücke, aber besser als nichts.

    Habs jetzt nicht direkt probiert, da derzeit keine Tabelle mit solchen Werten vorhanden.

    Thomas
     
  10. akretschmer

    akretschmer Datenbank-Guru

    Jupp, es ist keine Krücke, sondern nur der Versuch, ein Casting zu erzwingen. Siehe #7
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden