Rolf B: Summe über die letzten 7 Tage, gruppiert nach Datum

Beitrag lesen

Hallo franz_hoff,

deine Query ist eigentlich schon nahe dran. Kartesische Produkte sehe ich nicht als notwendig, da muss Dedlfix dein Anliegen falsch verstanden haben.

Änderungsvorschläge:

  1. Du musst NOW() durch CURDATE() ersetzen, weil NOW() eine Uhrzeit enthält. Die NOW-Query verschlampt die Aufträge vom Montag (weil im Date-Feld die Uhrzeit 00:00:00 ist).

  2. Wenn deine Datum-Spalte ein DATE Typ ist, kannst Du direkt danach gruppieren und brauchst kein DATE_FORMAT.

  3. Der DATE_FORMAT Spalte solltest Du noch einen Aliasnamen geben.

SELECT 
    DATE_FORMAT(Datum,'%d.%m.%Y') AS ErstellDatum, COUNT(*) AS anzahl 
FROM 
    Auftraege
WHERE 
    Datum >= SUBDATE(CURDATE(), WEEKDAY(CURDATE()))
GROUP BY 
    Datum
ORDER BY
    Datum

Falls es vordatierte Aufträge gibt oder Du die Abfrage für eine frühere Woche machen willst, muss die Where-Bedingung noch erweitert werden:

WHERE
    Datum BETWEEN SUBDATE(CURDATE(),WEEKDAY(CURDATE()))
              AND ADDDATE(CURDATE(),6-WEEKDAY(CURDATE()))

Rolf

--
sumpsi - posui - clusi