Ankündigung

Einklappen
Keine Ankündigung bisher.

[mySQL] - Höchster Datums-Werte in einer Kalenderwoche ausgeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [mySQL] - Höchster Datums-Werte in einer Kalenderwoche ausgeben

    Hallo,

    ich habe ein Problem mit einem SQL-Statement:

    Ich habe eine Tabelle mit folgenden Spalten: ID; Personal-Nr.; Wert; Kalenderwoche; Datum

    Nun möchte ich das zur Personal-Nr. 1000 die Werte des höchsten Datums Wert zu jeder Kalenderwoche ausgeben wir...

    Beispiel


    ID; Personal-Nr.,; Wert; Kalenderwoche; Datum

    1; 1000; 23,32; 18; 2020-04-05
    2; 1000; 23,32; 18; 2020-04-06
    3; 1000; 23,32; 18; 2020-04-07
    4; 1000; 23,32; 18; 2020-04-08
    5; 1000; 23,32; 18; 2020-04-09
    6; 1000; 23,32; 18; 2020-04-10
    7; 1000; 23,32; 19; 2020-04-11
    8; 1000; 23,32; 19; 2020-04-12
    9; 1000; 23,32; 19; 2020-04-13
    10; 1000; 23,32; 19; 2020-04-14
    11; 1000; 23,32; 19; 2020-04-15
    12; 1000; 23,32; 19; 2020-04-16


    Das Ergebnis sollte nun sein:

    KW; Personal-Nr.: Datum; Wert
    18; 1000; 2020-04-10; 23,32
    19; 1000; 2020-04-16; 23,32



    PHP-Code:
    SELECT kalenderwoche,personalnr,datum,wert

    FROM tableData WHERE personalnr 
    1000

    GROUP BY kalenderwoche

    Bekomme aber nicht das richtige Ergebnis ausgegeben (Datum ist nicht das höchste innerhalb einer Kalenderwoche)



  • #2
    Aggregation mit max() und dann nach allen nicht-aggregierten Spalten gruppieren.
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Hallo akretschmer,

      vielen Dank für die schnelle Antwort. Ich habe es gleich probiert )

      PHP-Code:

      SELECT max
      (datum) as datumkalenderwochewert

      FROM tableData WHERE personalnr 
      1000

      GROUP BY kalenderwoche ORDER BY kalenderwoche DESC

      Leider bekommt ich die zwar das max-Datum zu jeder Kalenderwoche aber die Werte stimmen nicht zum Datum überein. Wenn ich noch den "wert" mit in die Gruppierung ziehe, zeigt wer wieder alle Zeilen aus der Datenbank an.

      Was mach ich hier falsch (

      Kommentar


      • #4
        wert gehört auch ins GROUP BY, sonst ist die Abfrage fehlerhalft. Jede andere Datenbank würde hier eine Fehlermeldung werfen.

        Kommentar


        • #5
          so ist es. entweder also z.B. noch ein Subselect verwenden, oder Window-Funktionen, oder PostgreSQL mit DISTINCT ON( ...). Viele Wege führen zum Ziel.
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            Hallo,

            ich komme nicht auf die Lösung, könntest mir vielleicht das SQL-Statement formulieren?

            Kommentar


            • #7
              mal als Schnellschuß:

              Code:
              test=*# select * from rayn ;
               id |  p   | wert  | kw |   datum    
              ----+------+-------+----+------------
                1 | 1000 | 23.32 | 18 | 2020-04-05
                2 | 1000 | 23.32 | 18 | 2020-04-06
                3 | 1000 | 23.32 | 18 | 2020-04-07
                4 | 1000 | 23.32 | 18 | 2020-04-08
                5 | 1000 | 23.32 | 18 | 2020-04-09
                6 | 1000 | 23.32 | 18 | 2020-04-10
                7 | 1000 | 23.32 | 19 | 2020-04-11
                8 | 1000 | 23.32 | 19 | 2020-04-12
                9 | 1000 | 23.32 | 19 | 2020-04-13
               10 | 1000 | 23.32 | 19 | 2020-04-14
               11 | 1000 | 23.32 | 19 | 2020-04-15
               12 | 1000 | 23.32 | 19 | 2020-04-16
              (12 rows)
              
              test=*# with x as (select kw, max(datum) from rayn group by kw) select * from rayn where (kw, datum) in (select * from x);
               id |  p   | wert  | kw |   datum    
              ----+------+-------+----+------------
                6 | 1000 | 23.32 | 18 | 2020-04-10
               12 | 1000 | 23.32 | 19 | 2020-04-16
              (2 rows)
              
              test=*#
              PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

              Kommentar

              Lädt...
              X