Databases Reference
In-Depth Information
■
6.3■Auswertung nach Jahren und Monaten
Unser erster Bericht ist eine Darstellung der Gesamtwerte. Für einen detaillierteren Bericht
benötigen wir eine Auswertung nach Zeiträumen.
In der Tabelle
iw_sales
gibt es zwei Datumseinträge, die Spalte
orderDate
mit dem Bestell-
datum und die Spalte
postingDate
mit dem Verarbeitungsdatum. Das Verarbeitungsdatum
ist das Datum der Rechnungsstellung. Wir werden uns bei den Analysen und Berichten am
postingDate
orientieren.
Wir werden zunächst einen Jahresbericht erstellen. Wir wollen für jedes Jahr die Summe
der Kunden, Bestellungen, Artikelmengen und des Nettoumsatzes berechnen. Dazu müssen
wir die Jahreszahl des
postingDates
erfassen.
DATEPART (yyyy,s.postingDate)
Mit dem Befehl
DATEPART
lassen wir uns einen Teil des Datums ausgeben. Welchen Teil wir
ausgeben lassen wollen, bestimmen wir mit dem ersten Eintrag in der Klammer.
YYYY
ist
das Kennzeichen für eine vierstellige Jahreszahl.
Mit folgendem Befehl erhalten wir die Daten pro Jahr:
Select DATEPART (yyyy,s.postingDate) Jahr,
count (distinct s.customerNo) Kunden,
count (distinct s.orderNo) Bestellungen,
sum (s.quantity) Artikelmenge,
cast (sum (s.amount * s.quantity)as DECIMAL(10,2)) Nettosumme
FROM [dbo].[iw_sales]s
where s.type = 2
group by DATEPART (yyyy,s.postingDate)
Wichtig ist die
GROUP
BY
-Klausel am Ende des Selects. Wenn wir eine Aggregatfunktion
nutzen, wie
COUNT
,
SUM
,
AVG
,
MAX
,
MIN
und andere (die wir alle noch kennen lernen wer-
den), und wir das Ergebnis in Gruppen ausgeben wollen (das sind in unserem Fall die
Jahre), dann benötigen wir die
GROUP
BY
-Klausel.
Mit der
GROUP
BY
-Klausel kann für jede Gruppe genau eine Zeile mit Ergebnissen erzeugt
werden. Jede Spalte, die ausgewählt wird, muss in der
GROUP
BY
-Liste erscheinen.
Den Select und das Ergebnis der Abfrage sehen Sie in Bild 6.2.
Bild 6.2■
Jahresbericht: Select und
Ergebnis