Lösung Übung F: Liste aller Fächer (HAVING)

F) Wir wollen eine Liste aller Fächer, die mit R oder M beginnen.
Für jedes Fach brauchen wir die Anzahl der Lehrer, die es unterrichten, außerdem das Durchschnittsgehalt der Lehrer dieses Fachbereichs.
Da uns nur die Fächer interessieren, in denen man mehr als den Durchschnitt verdient, lassen wir uns nur die Einträge anzeigen, bei denen das Durchschnittsgehalt über 2800 Euro liegt.

Welche Lösung ist richtig?

(F1)
SELECT COUNT(l.id) AS "Anzahl Lehrer", AVG(l.gehalt) AS "Durchschnittsgehalt", f.fachbezeichnung
FROM faecher f, lehrer l, lehrer_hat_faecher lhf
WHERE lhf.idFaecher = f.id AND lhf.idLehrer = l.id AND durchschnittsgehalt > 2800
GROUP BY f.id
HAVING (f.fachbezeichnung LIKE 'm%' OR f.fachbezeichnung LIKE 'r%')
(F2)
SELECT COUNT(l.id) AS "Anzahl Lehrer", AVG(l.gehalt) AS "Durchschnittsgehalt", f.fachbezeichnung
FROM faecher f, lehrer l, lehrer_hat_faecher lhf
WHERE lhf.idFaecher = f.id AND lhf.idLehrer = l.id AND COUNT(l.gehalt) > 2800 AND 
     (f.fachbezeichnung LIKE 'm%' OR f.fachbezeichnung LIKE 'r%')
GROUP BY f.id
(F3)
SELECT COUNT(l.id) AS "Anzahl Lehrer", AVG(l.gehalt) AS "Durchschnittsgehalt", f.fachbezeichnung
FROM faecher f, lehrer l, lehrer_hat_faecher lhf
WHERE lhf.idFaecher = f.id AND lhf.idLehrer = l.id AND
     (f.fachbezeichnung LIKE 'm%' OR f.fachbezeichnung LIKE 'r%')
GROUP BY f.id
HAVING AVG(l.gehalt) > 2800
LÖSUNG:
(F3)