Version: Test
©Raddy 2001

SQL mit Oracle VIII                              zurück

Die
WHERE-Klausel
in Verbindung
mit GROUP BY
a-absatz.pcx (280 Byte)

Tabelle "Rechnung"

RNr.

Kundenname Betrag Status
1 Müller 10 bezahlt
2 Müller 20 bezahlt
3 Müller 40 offen
4 Müller 80 offen
5 Hoffmann 1000 bezahlt
6 Hoffmann 2000 bezahlt
7 Hoffmann 4000 bezahlt
8 Hoffmann 999 offen
9 Bauer 1 bezahlt
10 Bauer 2 bezahlt
Gegeben ist wieder eine Tabelle Rechnung.
a-absatz.pcx (280 Byte)

Einführendes Beispiel

Wir gehen von der Tabelle oben aus. Nehmen wir an, wir sollen ermitteln,
welcher Kunde noch wieviel Rechnungen offen hat (offen = nicht bezahlt).
Außerdem wollen wir für jeden Kunden einzeln wissen, für wieviel DM
er offene Rechnungen hat.

Der Befehl dazu sieht so aus:

        select kundenname, sum(betrag), count(betrag)
        from rechnung
        where status = 'offen'
        group by kundenname

Die Ausgabe lautet dann:
kundenname sum count
Müller 120 2
Hoffmann 999 1
    
a-absatz.pcx (280 Byte)

Erklärung

Zuerst wird die where-Klausel ausgeführt, d.h. es werden alle schon
bezahlten Rechnungen aussortiert. Es bleiben nur die Rechnungen 3,4 und 8
übrig (diese sind in der Tabelle oben grau markiert). 

Erst danach werden die (drei) übriggebliebenden Rechnungen in 
Gruppen eingeteilt. Die erste Gruppe besteht aus den zwei offenen
Rechnungen an den Kunden Müller, die zweite Gruppe besteht nur aus 
einer offenen Rechnung, nämlich der Rechnung an den Kunden Hoffmann.

Auf jeder der Gruppen werden dann die Gruppenfunktionen sum und
count angewendet.