Frage AVG-Berechnung mit LIMIT

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!
28 Januar 2012
163
0
16
#1
"SELECT AVG(ScoreHome) AS AvgScoreHome
FROM Matches
WHERE Matchtime >'2018-01-01'"

Oben die vereinfachte Abfrage. Ziel soll es sein, die durchschnittlich erzielten Tore einer Heimmannschaft im aktuellen Jahr 2018 zu ermitteln. Für das gesamte Jahr 2018 klappt dies auch mit der genannten Abfrage. Wenn ich allerdings den Durchschnitt der letzten fünf Spiele aus 2018 haben möchte und die Abfrage durch "ORDER BY Matchtime DESC LIMIT 5" erweitere, erhalte ich dennoch die selben Werte.

"SELECT AVG(ScoreHome) AS AvgScoreHome
FROM Matches
WHERE Matchtime >'2018-01-01' ORDER BY Matchtime DESC LIMIT 5"

Warum ändert sich die AVG-Berechnung nicht? Muss ich hier mit einem "Subselect" arbeiten? Wenn ja, wo muss das Subselect eingebaut werden?

Danke schon mal.
 

Sentence

Aktives Mitglied
30 Juni 2011
457
43
28
#2
Moin,
limit geht da nicht, da SELECT AVG(ScoreHome) ja eh nur einen Datensatz zurückgibt.

Mit einem Subselect sollte das gehen:

Code:
SELECT AVG(ScoreHome) AS AvgScoreHome
FROM (
  SELECT ScoreHome FROM Matches
  WHERE Matchtime >'2018-01-01' ORDER BY Matchtime DESC LIMIT 5) AS sub;
Fiddle: http://sqlfiddle.com/#!9/7dfe21/1

MfG