我想获得最后 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 创建一个 View ,然后使用第二个 View 来计算平均值。
最佳答案
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;
关于mysql - 表中每个组的底部 N 行的列的平均值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5284661/