Databases Reference
In-Depth Information
Werte von Aggregatfunktionen ignoriert. Die Anweisung aus Listing 11.7 ist also
äquivalent zu
select avg(preis),min(preis),max(preis),sum(preis),count(preis)
from alben
where preis is not null
Die Handhabung von
null
ist bei Funktionen uneinheitlich. Über die Gründe,
warum Aggregatfunktionen eine Extrawurst für
null
braten, mag man spekulie-
ren:
Da in die Berechnung von Aggregaten oft sämtliche Datensätze einer Tabelle
eingehen, kann die Verarbeitung sehr zeitaufwändig sein. Wenn Prädikate wie
preis is not null
vergessen werden und die Spalte auch nur einen einzigen
null
-Wert enthält, muss die Anweisung, die möglicherweise Stunden oder Tage
benötigt hat, korrigiert und erneut ausgeführt werden.
Hinweis
Aggregatfunktionen ignorieren
null
-Werte.
Der Vollständigkeit halber sei noch erwähnt, dass Aggregate über leere Spalten
oder über Spalten, die ausschließlich
null
enthalten, auch
null
zum Ergebnis
haben.
Welcher Datentyp für die Argumente einer Aggregatfunktion in Frage kommt, er-
gibt sich aus dem Kontext. Sinnlose Kombinationen wie
select avg(titel)
from alben
werden nicht akzeptiert: Aus Texten können keine Durchschnitte gebildet wer-
den. Anders sieht die Sache bei der folgenden Anweisung aus:
select max(titel)
from alben
Das Ergebnis ist
Tim und der Haifischsee
- der in der lexikographischen
Reihenfolge der Albentitel größte Wert. Eine Sonderstellung nimmt übrigens die
count
-Funktion ein. In der Anweisung
select count(preis)
from alben
zählt sie die Werte in der Spalte
preis
und ignoriert dabei
null
. In der Form
select count(
*
)
from alben