MAX Wert eines Monats Filtern

Cr4m0

Benutzer
Beiträge
22
Hi,
habe folgendes Problem:
für jeden tag des jahres habe ich meinen umsatz dokumentiert:
Datum - Umsatz
20130101 - 300
20130102 - 200
.
.
.
20130201 - 400
20130202 - 500
.
.
.
nun möchte ich für jeden monat den MAX Umsatz rausfiltern. Komme irgendwie nicht weiter.
Vielen Dank. Benjamin
 
Werbung:

Cr4m0

Benutzer
Beiträge
22
ich habe nun folgende anweisung:
SELECT MAX(Umsatz), to_char(Datum, '????') Moth FROM tabelle group by to_char(datum, '????');

nutze ich die group by funktion wenn die daten der spalte datum aus ziffern bestehen?
 
Werbung:

ukulele

Datenbank-Guru
Beiträge
4.394
Prinzipiell ist GROUP BY richtig. Schwer wird es, wenn das Datum des Tages an dem der Umsatz dem Monatsmaximum entspricht noch mit angezeigt werden soll. Das ist vor allem nicht in jeder SQL DB gleich zu lösen, ich hab mich mal versucht:
Code:
SELECT    t1.Jahr,
        t1.Monat,
        t2.Datum,
        t1.Umsatz
FROM    (    SELECT    datepart(year,Datum) AS Jahr,
                    datepart(month,Datum) AS Monat,
                    max(Umsatz) AS Umsatz
            FROM    tabelle
            GROUP BY datepart(month,Datum) ) t1
LEFT JOIN (    SELECT    max(Datum) AS Datum
            FROM    tabelle
            WHERE    datepart(year,Datum) = t1.Jahr
            AND        datepart(month,Datum) = t1.Monat
            AND        Umsatz = t1.Umsatz ) t2
ON        t2.Umsatz = t1.Umsatz

bzw.

Code:
SELECT   t1.Jahr,
     t1.Monat,
     (   SELECT   max(Datum) AS Datum
       FROM   tabelle
       WHERE   datepart(year,Datum) = t1.Jahr
       AND     datepart(month,Datum) = t1.Monat
       AND     Umsatz = t1.Umsatz ) AS Datum,
     t1.Umsatz
FROM   (   SELECT   datepart(year,Datum) AS Jahr,
           datepart(month,Datum) AS Monat,
           max(Umsatz) AS Umsatz
       FROM   tabelle
       GROUP BY datepart(month,Datum) ) t1
 
Oben