Lösung Übungen D und E: GROUP BY


D1) Erstelle eine Liste, aus der ersichtlich wird, wie viele Lehrer die einzelnen Fächer unterrichten, sortiert nach Anzahl absteigend. Ausgabe: fachbezeichnung, Anzahl

SELECT f.fachbezeichnung, COUNT(f.id) AS "Anzahl"
    -- COUNT(*) ginge auch
FROM lehrer l, lehrer_hat_faecher lhf, faecher f
WHERE lhf.idFaecher = f.id AND lhf.idLehrer = l.id
GROUP BY f.id
ORDER BY Anzahl DESC

D2) Erstelle eine Liste der Lehrer mit der Anzahl der Fächer, die jeder einzelne Lehrer unterrichtet, sortiert nach Anzahl der Fächer absteigend. Ausgabe: Lehrername, Anzahl der Fächer

SELECT l.name AS "Lehrername", COUNT(f.id) AS "Anzahl der Fächer"
FROM lehrer l, lehrer_hat_faecher lhf, faecher f
WHERE lhf.idFaecher = f.id AND lhf.idLehrer = l.id
GROUP BY l.id
ORDER BY "Anzahl der Fächer" DESC

-- oder
ORDER BY COUNT(f.id) DESC