Basis van databases

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?

  1. A6, 6, 40
  2. B6, 4, 40
  3. C6, 4, 60
Antwoord en toelichting tonen

Antwoord: C. 6, 4, 60

COUNT(*) telt rijen ongeacht of ze NULL bevatten, dus het is 6. Met een opgegeven kolom, zoals in COUNT(Punten), worden alleen de rijen geteld waarin die kolom niet NULL is, dus het is 4. AVG(Punten) deelt de som van de vier waarden die niet NULL zijn, 50 + 70 + 90 + 30 = 240, door het aantal waarden dat niet NULL is, 4, wat 240 ÷ 4 = 60 geeft. Let op: dat verschilt van de som delen door het totale aantal rijen, SUM(Punten) / COUNT(*) = 240 ÷ 6 = 40. Wie NULL als 0 punten wil behandelen, vervangt het vóór het aggregeren met COALESCE(Punten, 0).

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van databases

  1. 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?
  2. 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?
  3. 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?
  4. 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?
  5. De tabel Medewerker (MedewerkerNr, Naam, AfdelingID) heeft vijf rijen met als waarden voor AfdelingID achtereenvolgens 10, 20, 10, NULL en NULL. De tabel Afdeling (AfdelingID, Afdelingsnaam) heeft drie rijen met AfdelingID 10, 20 en 30. Hoeveel rijen geeft SELECT Afdeling.Afdelingsnaam, Medewerker.Naam FROM Afdeling LEFT OUTER JOIN Medewerker ON Afdeling.AfdelingID = Medewerker.AfdelingID?