Lösung Übung D: Smartphonemarken (HAVING)


D) Zeige eine Liste aller Smartphonemarken und für jede Marke die Anzahl der Schüler, die ein solches Smartphone besitzen.

Die Marke Apple wollen wir nicht berücksichtigen.
Außerdem interessieren uns nur die Marken, von denen mindestens 15 Schüler ein Smartphone haben.


WHERE oder HAVING - Welche Lösung ist richtig? 

(D1)
SELECT COUNT(*) AS "Anzahl", marke
FROM schueler, smartphones
WHERE schueler.idSmartphones = smartphones.id AND marke <> 'Apple' AND count(*) > 15
GROUP BY marke
ODER 

(D2)
SELECT COUNT(*) AS "Anzahl", marke
FROM schueler, smartphones
WHERE schueler.idSmartphones = smartphones.id AND marke <> 'Apple'
GROUP BY marke
HAVING count(*) > 15

LÖSUNG:

(D2)

In D1 wird die Aggregatsfunktion COUNT(*) in WHERE gebraucht -> Fehler (Aggregatfunktionen gehören nicht in die WHERE-Klausel)