Databases Reference
In-Depth Information
SELECT
COUNT(artikel_nr)AS ANZAHL,
SUM(listenpreis) AS PREISSUMME,
AVG(listenpreis) AS DURCHSCHN,
MIN(listenpreis) AS KLEINSTER,
MAX(listenpreis) AS GROESSTER
FROM artikel;
ANZAHL PREISSUMME DURCHSCHN KLEINSTER GROESSTER
=========== =========== ========== ========== ==========
12 428.33 35.69 .98 112.80
Einschränkungen der Projektion bei Anwendung von
Aggregatfunktionen
Die Aggregatfunktionen in den bisher vorgestellten Beispielen fassen eine ganze
Ta b e l l e in einer Reihe zusammen. Aus diesem Grund ist es nicht möglich, zusätzlich
noch einzelne Attributwerte auszugeben, denn dann müsste die Ergebnistabelle
mindestens so viele Zeilen enthalten, wie es verschiedene Werte in der gewünsch-
ten Spalte gibt. Das heißt: Wenn in der SELECT-Klausel mindestens eine Aggregat-
funktion auftritt, dann dürfen keine elementaren Spalten mehr auftreten. 17
Aufgabe 5.23
Warum liefert im obigen Fall die Funktion COUNT(artikel_nr) mit Sicherheit das-
selbe Ergebnis wie COUNT(*) ? Was würde bei Anwendung von COUNT(DISTINCT
artikel_nr) herauskommen?
Nullmarken bei Aggregatfunktionen
Nullmarken erfahren bei Anwendung der Aggregatfunktionen keine Berücksichti-
gung. Dieses führt bei der Summenbildung zu demselben Resultat, als wenn NULL
die Zahl 0 repräsentierte. Bei der Minimum- und Maximumbildung und bei der
Durchschnittsbildung fallen Nullmarken ganz heraus. Bei leeren Ergebnismengen
sind MIN , AVG , MAX nicht definiert. Die COUNT-Funktion, auf eine Spalte ange-
wandt, zählt die tatsächlich vorhandenen Werte. Bei Spalten, für die Nullmarken
zulässig sind, kann deshalb das Ergebnis COUNT(spalte) kleiner sein als COUNT(*) .
Dieses Verfahren scheint deswegen berechtigt, weil wir einen Wert, der gar nicht
da ist, auch nicht in einen Durchschnitt einbeziehen können. Aber wie sieht es aus,
wenn der Wert zwar existiert, aber zurzeit nicht bekannt ist, also durch eine A-
Marke repräsentiert ist? Dann wird der über AVG(spalte) berechnete Durchschnitt
falsch, und der über die Formel SUM(spalte)/COUNT(spalte) berechnete ebenfalls.
Richtig wäre dann die Antwort NULL , was hieße: » Ich kann den Durchschnitt nicht
17 Außer Spalten aus der GROUP BY-Klausel, wenn diese verwendet wird. vgl. 5.2.9.
 
Search WWH ::




Custom Search