Kann mir jemand in SQL helfen?
Folgende Tabellen:
Aktuell stehe ich bei den beiden Aufgaben an:
10) Pro Kursleiter soll der durchschnittliche Erlös und der maximale Preis ermittelt werden
SELECT k.LEITER AS LEITER, AVG(k.PREIS) AS MITTEL, MAX(k.PREIS) AS MAXIMAL FROM Kurs k
INNER JOIN Teilnahme t ON k.KURSNR = t.KURSNR
GROUP BY k.LEITER
11) Liste der Aufbaukurse die selbst Voraussetzung für andere Kurse sind. (Aufbaukurse setzen andere Kurse voraus
SELECT BEZEICHNUNG
FROM Kurs
WHERE VORAUSGESETZTER_KURS IS NOT NULL
AND KURSNR NOT IN (SELECT VORAUSGESETZTER_KURS FROM Kurs)
Weiß jemand die richtigen SQL Queries dazu?
2 Antworten
- Für den Erlös musst du die Teilnehmer joinen (hast du schon) und den Kurspreis mit der Anzahl der Teilnehmer multiplizieren (fehlt), bevor du das AVG machst.
- Bei der 2. soll der Kurs ja gerade Vorraussetzung für einen anderen sein, also IN statt NOT IN
Danke hat funktioniert mit
10)
SELECT K.LEITER, AVG(E.ERLOES) AS DURCHSCHNITT_ERLOES, MAX(K.PREIS) AS MAX_PREIS
FROM Kurs K
LEFT JOIN (
SELECT T.KURSNR, COUNT(*) * K.PREIS AS ERLOES
FROM Teilnahme T
JOIN Kurs K ON T.KURSNR = K.KURSNR
GROUP BY T.KURSNR, K.PREIS
) E ON K.KURSNR = E.KURSNR
GROUP BY K.LEITER
11)
SELECT BEZEICHNUNG
FROM Kurs
WHERE VORAUSGESETZTER_KURS IS NOT NULL
AND KURSNR IN (SELECT VORAUSGESETZTER_KURS FROM Kurs)
Der Erlös eines Kurses ist Preis mal Teilnehmerzahl. Der mittlere Erlös wäre dann Gesamterlös durch Kurszahl