Basis van databases
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?
- A2 rijen
- B3 rijen
- C4 rijen
Antwoord en toelichting tonen
Antwoord: A. 2 rijen
Eerst houdt WHERE alleen de rijen over met een salaris van 300 of meer. Bij Verkoop blijven twee rijen over (320 en 350), bij Ontwikkeling twee (400 en 310), bij Administratie één (300) en bij Planning één (330); de 280 van Verkoop en de 260 van Administratie vallen af. Daarna bundelt GROUP BY de rijen per afdeling in vier groepen met de aantallen Verkoop 2, Ontwikkeling 2, Administratie 1 en Planning 1. Ten slotte houdt HAVING COUNT(*) >= 2 alleen de groepen met twee of meer rijen over, dus het resultaat bestaat uit twee rijen: Verkoop en Ontwikkeling. Zonder WHERE geteld geeft het Verkoop 3, Ontwikkeling 2, Administratie 2 en Planning 1, en dan zouden drie rijen aan HAVING voldoen. De volgorde, waarbij WHERE vóór het groeperen werkt en HAVING erna, bepaalt het resultaat.