Die
WHERE-Klausel
in Verbindung
mit GROUP BY |
 |
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.
|
 |
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 |
|
 |
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.
|
|