Hallo liebe Community, ich stehe gerade ein wenig auf dem Schlauch wodurch sich diese Anmeldung wohl auch erklären lässt, nachdem das "Lösungsgooglen" mich nicht weiterbrachte.
Problematik:
Es gibt 4 verknüpfte Tabellen(rennläufer, läuft, strecke, herkunft)(INNODB), nun will ich den Durchschnitt von den jeweils 10 schnellsten jeder Herkunft(Zimbabwe, ..) auf einer bestimmten Strecke ermitteln, es kann allerdings auch mehr als 10Läufer pro Land geben, trotzdem soll er dann nur die 10schnellsten des jeweiligen Landes nehmen und davon den Durchschnitt errechnen.
Die Ausgabe könnte so aussehen:
----------------------
Land | Durchschnitt |
----------------------
Zimbabwe | 126423 |
Somalia | 133334 |
Südafrika | 102413 |
----------------------
Nun habe ich mich bereits daran probiert doch gelang es mir nur für jeweils ein Land die Durchschnittszeit zu ermitteln und nicht gleich für alle:
Code:
SELECT x.Land, round(avg(x.rennzeit),0) AS Durchschnitt
FROM (
SELECT h.land, l.rennzeit
FROM fahrer f, laeuft l, strecke s, herkunft h
WHERE f.hid=h.hid AND l.name=f.name AND l.sid = s.sid AND s.name = 'BengalischerReiterhof' AND h.land = 'Zimbabwe'
ORDER BY l.rennzeit ASC
LIMIT 10
) AS x
GROUP BY x.land
HAVING count(x.rennzeit) = 10;
Habt ihr eventuell Lösungsvorschläge?
lg
nullmeter