Grundlagen der Datenbanken
Die Spalte Punkte einer Testtabelle enthält vier Werte: 80, NULL, 70, 90 (NULL bedeutet, dass die Person nicht am Test teilgenommen hat). Was ist das Ergebnis von SELECT AVG(Punkte) FROM Test?
- A60
- B80
- CNULL
Antwort und Erläuterung anzeigen
Antwort: B. 80
Die Aggregatfunktionen von SQL (SUM, AVG, MAX, MIN sowie COUNT mit angegebener Spalte) ignorieren NULL. AVG(Punkte) ist der Mittelwert der drei Werte ungleich NULL: (80 + 70 + 90) ÷ 3 = 240 ÷ 3 = 80. NULL als 0 zu behandeln und durch 4 zu teilen, ergäbe 240 ÷ 4 = 60, doch so rechnet AVG nicht. Soll mit 0 Punkten für Nichtteilnehmende gemittelt werden, wird NULL vor der Aggregation durch 0 ersetzt, etwa mit AVG(COALESCE(Punkte, 0)). Sind alle Werte NULL, ist das Ergebnis von AVG NULL.