Announcement

Collapse
No announcement yet.

Maximum

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Maximum

    Hallo,

    ich habe eine Tabelle die folgendermaßen aussieht:


    Jetzt möchte ich das jeweilige Maximum und Minimum jedes Monats der verschiedenen Messwerte ausgeben.

    Mit dem Code haut das schon hin:

    Code:
    SELECT distinct DATE_FORMAT(`date`,'%Y%m') AS datum, max(OW1Akt) AS max, id FROM daten  GROUP BY datum;
    Nur kann ich mir dabei nicht das dazugehörige Datum ausgeben, da er immer das erste Datum der Gruppe ausgibt und nicht das des Maximums.

    Wie kann ich das umstricken, dass ich zusätzlich noch das Datum ausgeben kann?

    Gruß,
    px5

  • #2
    Hallo,

    ein Distinct ist in einer gruppierten Abfrage immer unsinnig, da die Gruppierung schon für das Distinct sorgt. Außerdem solltest du das Feld id im Select-Teil weglassen oder (wenn danach gruppiert werden soll) in die Group-Klausel aufnehmen. Alle nichtaggregierten Werte aus dem Selct-Teil MÜSSEN in der Group-Klausel aufgeführt werden.
    [highlight=sql]
    SELECT DATE_FORMAT(date, '%Y%m') AS datum, max(OW1Akt) AS max
    FROM daten
    GROUP BY DATE_FORMAT(date, '%Y%m');
    [/highlight]

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      SELECT DATE_FORMAT(`date`,'%Y%m') AS datum, OW1Akt, id FROM daten
      Where OW1AKT=(select max(d.OW1Akt) from daten d and DATE_FORMAT(`d.date`,'%Y%m') = DATE_FORMAT(`daten.date`,'%Y%m'))

      Gruß
      docendo discimus

      Comment


      • #4
        Originally posted by frauwue View Post
        SELECT DATE_FORMAT(`date`,'%Y%m') AS datum, OW1Akt, id FROM daten
        Where OW1AKT=(select max(d.OW1Akt) from daten d and DATE_FORMAT(`d.date`,'%Y%m') = DATE_FORMAT(`daten.date`,'%Y%m'))

        Gruß
        schmeißt bei mir einen syntax fehler bei AND, komm aber nicht drauf an was es liegt.

        @Falk:
        danke für die optimierung, hilft mir aber bei meinem problem nicht weiter

        Comment


        • #5
          Entschuldigung,
          das and in der Klammer muss durch where ersetzt werden.
          docendo discimus

          Comment


          • #6
            danke für die antwort

            jetzt kommt:
            #1054 - Unknown column 'd.date' in 'where clause'

            Comment


            • #7
              Vielleicht geht in deiner Datenbank "daten d" nicht,
              schreib mal "daten as d".
              docendo discimus

              Comment


              • #8
                Code:
                SELECT DATE_FORMAT( date, '%Y%m' ) AS datum, OW1Akt, id
                FROM daten
                WHERE OW1AKT = (
                SELECT max( d.OW1Akt )
                FROM daten AS d
                WHERE DATE_FORMAT( d.date, '%Y%m' ) = DATE_FORMAT( `daten.date` , '%Y%m' ) )
                bringt den selben fehler für `daten.date`, wenn ich die `` weglasse und die querry abschicke hängt phpMyAdmin und bringt kein ergebniss

                Comment


                • #9
                  dann probiers mal so komplett mit Aliasen:

                  SELECT DATE_FORMAT( d1.date, '%Y%m' ) AS datum, d1.OW1Akt, d1.id
                  FROM daten as d1
                  WHERE d1.OW1AKT = (
                  SELECT max( d.OW1Akt )
                  FROM daten AS d
                  WHERE DATE_FORMAT( d.date, '%Y%m' ) = DATE_FORMAT( `d1.date` , '%Y%m' ) )
                  docendo discimus

                  Comment


                  • #10
                    läuft durch nach 3,5min, aber mit falschen/strangen ergebnis

                    Comment


                    • #11
                      Ich sehe jetzt nicht, was da falsch ist, da ich Deine kompletten Daten nicht kenne. Wenn Du allerdings pro Monat nur einen Datensatz willst, dann musst Du entweder die ID weglassen und es so machen, wie Falk es geschrieben hat, oder Du musst für die ID noch eine Bedingung formulieren (dann dauert die Abfrage aber noch länger).

                      Gruß
                      docendo discimus

                      Comment

                      Working...
                      X