Diese Website verwendet Cookies sowie Analyse-Software zur Erfassung und Auswertung der Webseiten-Nutzung. Details zur Art und Umfang der Datenerhebung finden Sie in unserer Datenschutzerklärung. Wenn Sie diese Website weiterhin nutzen, stimmen Sie der Verwendung von Cookies zu.

Druckansicht der Seite www.rowisoft.de/handbuch-gruppierungen
Dokumentation zum Warenwirtschaftssystem Rowisoft blue

Gruppierungen

Sehen wir uns nachfolgenden Auszug aus der Tabelle Vorgänge an. Hier finden wir die Rechnungen aus den Jahren 2008, 2009 und 2010 – der Übersichtlichkeit wegen, stellen wir hier nur einmal die beiden relevanten Felder „BerechnungsDatum“ und „Zwischensumme“ dar:

Sie sehen also, dass wir in unserem Beispiel jeweils verschiedene Werte für die einzelnen Jahre hinterlegt haben.

Nun möchten wir eine Umsatzauswertung (also die Summe von „Zwischensumme“), unterteilt nach Jahren. Wir möchten also die Umsätze der Jahre 2008, 2009 und 2010 separat ermitteln.

Mithilfe der Aggregatsfunktion SUM können wir ja bereits die Werte mehrerer Datensätze zusammenrechnen. Und unter Verwendung der Funktion EXTRACT können wir auch bereits die Jahresangabe des Rechnungsdatums extrahieren.

Um zum Ziel zu gelangen, beginnen wir zunächst mit einer ganz einfachen Abfrage:

SELECT EXTRACT(YEAR, BerechnungsDatum) AS Jahr, Zwischensumme FROM Vorgaenge WHERE Typ = ‘Rechnung‘

Diese Abfrage gibt uns also die soeben skizzierte Tabelle zurück – lediglich die Datumsfelder wurden verändert – statt dem vollständigen Datum finden wir nun nur noch die Jahreszahl:

Leider können wir nun nicht einfach die Aggregatsfunktion „SUM“ für unsere Spalte Zwischensumme verwenden. Hierfür müssen wir der Datenbank erst noch mitteilen, über welche Datensätze die Summe berechnet werden soll, bevor eine neue Summe berechnet werden soll.

Es solle also die Zwischensumme nur bei den Datensätzen zusammengerechnet werden, bei denen das Feld „Jahr“ übereinstimmt. Man nennt dies auch „gruppieren“. Eine Gruppierung erreicht man in SQL mit dem Schlüsselwort „GROUP BY“, welches von zu gruppierenden Feld gefolgt wird.

Wir gruppieren also nach der Spalte „Jahr“ und berechnen die Zwischensumme mit unserer bereits bekannten Funktion SUM:

SELECT EXTRACT(YEAR, BerechnungsDatum) AS Jahr, SUM(Zwischensumme) AS Umsatz FROM Vorgaenge WHERE Typ = ‘Rechnung‘ GROUP BY Jahr

Nun erhalten wir als Ergebnis nur noch 3 Datensätze, nämlich pro Jahr einen Datensatz, bei dem die Zwischensumme aufsummiert wurde:

Die Jahresumsatzstatistik ist damit fertig. Was aber, wenn wir auch noch eine Monatsstatistik möchten?

Wir möchten also eine Umsatzstatistik (Umsatz = Summe der Zwischensummen), gruppiert nach Jahr und Monat. Dafür können wir nach dem GROUP BY – Ausdruck mehrere Felder angeben, nach denen gruppiert werden soll.

Wir müssen also zunächst, zusätzlich zur Jahreszahl, auch noch die Monatsangabe extrahieren. Dann gruppieren wir unsere Summe nach Jahres- und Monatsangabe.

SELECT EXTRACT(MONTH, BerechnungsDatum) AS Monat, EXTRACT(YEAR, BerechnungsDatum) AS Jahr, SUM(Zwischensumme) AS Umsatz FROM Vorgaenge WHERE Typ = ‘Rechnung‘ GROUP BY Jahr, Monat

Damit ist die Monats-Umsatzstatistik ebenfalls fertig. Eine Kleinigkeit bessern wir zur besseren Veranschaulichung noch nach: Nämlich die aufsteigende Sortierung nach Jahres- und Monatsangabe:

SELECT EXTRACT(MONTH, BerechnungsDatum) AS Monat, EXTRACT(YEAR, BerechnungsDatum) AS Jahr, SUM(Zwischensumme) AS Umsatz FROM Vorgaenge WHERE Typ = 'Rechnung' GROUP BY Jahr, Monat ORDER B

Die URL dieser Seite ist: www.rowisoft.de/handbuch-gruppierungen.html
Gedruckt am Dienstag, 12. Dezember 2017.
© Copyright by Rowisoft GmbH.
Commercial use prohibited.


Notizen:

pinnery
pinnery.com
pinnery - für Ihre Projekte
Projekt-Software
Perfekt organisiert
Alles mit jedem organisieren! In pinnery erfassen Sie Ihre Aufgaben und teilen sie mit Freunden und Kollegen. Durch die in Spalten aufgeteilte, übersichtliche Darstellung behalten Sie Ihr Projekt immer im Blick.
pinnery ist kostenlos!
Jetzt registrieren!