Grundlagen der Datenbanken

Die Spalte Punkte einer Ergebnistabelle enthält sechs Werte: 50, NULL, 70, NULL, 90, 30. Welche Antwort zeigt der Reihe nach das Ergebnis von SELECT COUNT(*), COUNT(Punkte), AVG(Punkte) FROM Ergebnis?

  1. A6, 6, 40
  2. B6, 4, 40
  3. C6, 4, 60
Antwort und Erläuterung anzeigen

Antwort: C. 6, 4, 60

COUNT(*) zählt die Zeilen unabhängig davon, ob sie NULL enthalten, und ergibt daher 6. Mit angegebener Spalte wie bei COUNT(Punkte) werden nur Zeilen gezählt, in denen diese Spalte nicht NULL ist, also 4. AVG(Punkte) teilt die Summe der vier Werte ungleich NULL, 50 + 70 + 90 + 30 = 240, durch deren Anzahl 4, was 240 ÷ 4 = 60 ergibt. Zu beachten ist, dass dies nicht mit der Summe geteilt durch die Gesamtzahl der Zeilen übereinstimmt, SUM(Punkte) / COUNT(*) = 240 ÷ 6 = 40. Soll NULL als 0 Punkte zählen, wird es vor der Aggregation mit COALESCE(Punkte, 0) ersetzt.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Datenbanken

  1. Aus einer Mitarbeitertabelle (MitarbeiterNr, Abteilung, Gehalt) sollen die Abteilungen mit einem Durchschnittsgehalt von 300 oder mehr samt diesem Durchschnitt ermittelt werden. Welche SQL-Anweisung ist richtig?
  2. Eine Umsatztabelle (Filiale, Betrag) enthält sieben Zeilen: (A, 500), (A, 700), (B, 300), (B, 400), (C, 1200), (D, 200), (D, 900). Wie viele Zeilen liefert SELECT Filiale, SUM(Betrag) FROM Umsatz GROUP BY Filiale HAVING SUM(Betrag) >= 1000?
  3. Eine Mitarbeitertabelle (Name, Abteilung, Gehalt) hat 8 Zeilen mit folgenden Gehältern je Abteilung: Vertrieb 320, 280, 350; Entwicklung 400, 310; Verwaltung 260, 300; Planung 330. Wie viele Zeilen liefert SELECT Abteilung, COUNT(*) FROM Mitarbeiter WHERE Gehalt >= 300 GROUP BY Abteilung HAVING COUNT(*) >= 2?
  4. Eine Mitarbeitertabelle (MitarbeiterNr, Name, AbteilungsID) hat 4 Zeilen mit den AbteilungsID-Werten 10, 20, 10 und NULL in dieser Reihenfolge. Eine Abteilungstabelle (AbteilungsID, Abteilungsname) hat 3 Zeilen mit AbteilungsID 10, 20 und 30. Wie viele Zeilen liefert SELECT Mitarbeiter.Name, Abteilung.Abteilungsname FROM Mitarbeiter INNER JOIN Abteilung ON Mitarbeiter.AbteilungsID = Abteilung.AbteilungsID?
  5. Eine Mitarbeitertabelle (MitarbeiterNr, Name, AbteilungsID) hat 5 Zeilen mit den AbteilungsID-Werten 10, 20, 10, NULL und NULL in dieser Reihenfolge. Eine Abteilungstabelle (AbteilungsID, Abteilungsname) hat 3 Zeilen mit AbteilungsID 10, 20 und 30. Wie viele Zeilen liefert SELECT Abteilung.Abteilungsname, Mitarbeiter.Name FROM Abteilung LEFT OUTER JOIN Mitarbeiter ON Abteilung.AbteilungsID = Mitarbeiter.AbteilungsID?