Basis van databases

De kolom Punten van de tabel Toets bevat vier waarden: 80, NULL, 70, 90 (NULL betekent dat de persoon de toets niet heeft gemaakt). Wat is het resultaat van SELECT AVG(Punten) FROM Toets?

  1. A60
  2. B80
  3. CNULL
Antwoord en toelichting tonen

Antwoord: B. 80

De aggregatiefuncties van SQL (SUM, AVG, MAX, MIN en COUNT met een opgegeven kolom) negeren NULL. AVG(Punten) is het gemiddelde van de drie waarden die niet NULL zijn: (80 + 70 + 90) ÷ 3 = 240 ÷ 3 = 80. NULL als 0 behandelen en door 4 delen zou 240 ÷ 4 = 60 geven, maar zo rekent AVG niet. Wie een gemiddelde wil waarin afwezigen als 0 punten meetellen, vervangt NULL vóór het aggregeren door 0, zoals in AVG(COALESCE(Punten, 0)). Als alle waarden NULL zijn, is het resultaat van AVG NULL.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van databases

  1. De kolom Punten van de tabel Resultaat bevat zes waarden: 50, NULL, 70, NULL, 90, 30. Welk antwoord geeft in volgorde het resultaat van SELECT COUNT(*), COUNT(Punten), AVG(Punten) FROM Resultaat?
  2. Uit de tabel Medewerker (MedewerkerNr, Afdeling, Salaris) moeten de afdelingen met een gemiddeld salaris van 300 of meer worden opgevraagd, samen met dat gemiddelde. Welk SQL-statement is juist?
  3. De tabel Omzet (Filiaal, Bedrag) bevat zeven rijen: (A, 500), (A, 700), (B, 300), (B, 400), (C, 1200), (D, 200), (D, 900). Hoeveel rijen geeft SELECT Filiaal, SUM(Bedrag) FROM Omzet GROUP BY Filiaal HAVING SUM(Bedrag) >= 1000?
  4. De tabel Medewerker (Naam, Afdeling, Salaris) heeft acht rijen, met per afdeling de volgende salarissen: Verkoop 320, 280, 350; Ontwikkeling 400, 310; Administratie 260, 300; Planning 330. Hoeveel rijen geeft SELECT Afdeling, COUNT(*) FROM Medewerker WHERE Salaris >= 300 GROUP BY Afdeling HAVING COUNT(*) >= 2?
  5. De tabel Medewerker (MedewerkerNr, Naam, AfdelingID) heeft vier rijen met als waarden voor AfdelingID achtereenvolgens 10, 20, 10 en NULL. De tabel Afdeling (AfdelingID, Afdelingsnaam) heeft drie rijen met AfdelingID 10, 20 en 30. Hoeveel rijen geeft SELECT Medewerker.Naam, Afdeling.Afdelingsnaam FROM Medewerker INNER JOIN Afdeling ON Medewerker.AfdelingID = Afdeling.AfdelingID?