// najwieksze srednie zdobycze punktowe $sql = 'SELECT td1.HostID, td1.HostName, AVG( td1.HostPoints ) AS AHP, AVG( td2.GuestPoints ) AS AGP, ( ( SUM( td1.HostPoints ) + SUM( td2.GuestPoints ) ) / ( Count( td1.HostID ) + Count( td2.GuestID ) ) ) AS Srednia' . ' FROM tournamentsdata AS td1' . ' LEFT JOIN tournamentsdata AS td2 ON td1.HostID = td2.GuestID' . ' GROUP BY td1.HostID' . ' ORDER BY Srednia DESC ' . ' LIMIT 15 '; $res_big_sr = mysql_query($sql, $link);
PYTANIE: Jak zmodyfikować to zapytanie aby liczona była średnia z dokładnie ostatnich 50 pojedynków? Dodatkowy warunek, jeśli zawodnik nie rozegrał jeszcze 50 pojedynków średnia nie będzie mu policzona.
UWAGA:
chciałem to początkowo zrobić za pomocą php+MYSQL w ten sposób:
1) czy sa jacys zawodnicy dla ktorych trzeba policzyc srednia? tak idz do (2) nie idz do 6)
2) czy zawodnik zagrał 50 meczów? tak idz do (3) nie idz do (1)
3) przelicz jego srednia zadajac odpowiednie zapytanie do bazy
4) zapisz w tabeli tymczasowej
5) posortuj
6) koniec
tyle ze takie rozwiqazanie jest w moim odczuciu bardzo nieefektywne (obecnie w bazie jest okolo 200 zawodnikow a bedzie ich wiecej) ze wzgledu na petle ktora trzeba uzyć