我想得到最后5行的一个列的平均值(如果玩家少于5行(游戏)那么它应该什么也不返回..)
如果我可以使用子查询,那么它将是直接的,但由于不支持,我不知道如何处理它。
下面的sql是我到目前为止所拥有的,如果玩家玩了超过5场游戏,这将获得每个玩家所有游戏的平均值。
CREATE VIEW last_5_avg
AS
SELECT player, avg(score) FROM game_stats
JOIN games
ON games.id = games_stats.id GROUP BY player HAVING COUNT(games.id) > 4
ORDER BY games.id DESC;
看起来解决此问题的唯一方法是为每个玩家的最后5个game_stats创建一个视图,然后使用第二个视图来执行平均值。
答案 0 :(得分:1)
select player, avg(score)
from game_stats
inner join games g0 on g0.id = games_stats.id
where g0.id in (
select g1.id
from games g1
where g1.id = g0.id
order by g1.id desc
limit 5
)
group by player
having count(g0.id) > 4
order by g0.id desc;
答案 1 :(得分:0)
使用LIMIT。
XXXXXXX ORDER BY games.id DESC LIMIT 5;
确保您的条件符合以下顺序 -
HAVING ---> ORDER BY ---> LIMIT
答案 2 :(得分:0)
http://dev.mysql.com/doc/refman/5.0/en/select.html
我认为LIMIT
就是你想要的。