"Group by" und "max" Funktionen Verknüpfen

superguddy777

Grünschnabel
Hallo zusammen,

wie kann man die Group-By Funktion und die max Funktion miteinander verknüpfen?

Hintergrund: Aus einer Tabelle mit Bestellungen sollen immer die beiden letzten Bestellpreise eines Artikels ausgewertet und in eine eigene Tabelle geschrieben werden.

Man müsste als erst mal nach Artikel-Nr. gruppieren, und dann aus der jeweiligen Gruppe die beiden Datensätze mit dem aktuellsten Datum auslesen.

Kann mir jemand ein Beispiel geben, wie ich dies hinbekomme?

Vielen lieben Dank + Gruss aus der Schweiz
Mathias
 
Hallo,

aufgrund deiner Anforderungen bräuchte man soetwas wie ein Ranking und kein einfaches MAX() und zusätzlich ein wenig Unterstützung durch co-related Subqueries.

Ich habs mal am Beispiel MySQL gezeigt:

Diese Lösung gibt maximal 2 Records je Artikel aus:

SQL:
select artikel_id, 
       preis 
  from
   (select 
       distinct 
           (select count(bestelldatum) 
              from bestellungen b1 
             where b1.artikel_id   = b2.artikel_id 
               and b1.bestelldatum > b2.bestelldatum) as rnk, 
        b2.artikel_id, 
        b2.preis,
        b2.bestelldatum 
     from bestellungen b2) b 
  where rnk < 2

Um nur einen Datensatz pro Artikel ID zu bekommen, kannst du z.B. noch GROUP_CONCAT() anwenden, d.h. statt wie oben einfach die Records auszugeben und unten in der aeussersten Query ein GROUP BY ergänzen:

SQL:
SELECT artikel_id,
       GROUP_CONCAT(preis) AS letzte_preise
  FROM ....
GROUP BY artikel_id;

Hoffe es hilft,
Markus
 

Neue Beiträge

Zurück