我需要计算每个玩家3个最近得分(高尔夫回合)的平均得分。如果它对代码/语法很重要,那么只有在它们至少有3个分数时才需要这样做。
我有一个包含以下字段的视图:
round_id
player_id
score
round_date
当新分数输入数据库时,我想跟踪并通知。我认为我的选择是将它保存在数据库中(不知何故)或生成适当的PHP代码来做同等的事情。但是考虑到保留在数据库本身内部,它可以/将更好地处理新的数据插入/更新。 PHP将有一个页面需要加载才能执行。
我已经看到了一些嵌套select语句的例子,还有一些有mysql变量的例子(我的基本sql技能,并没有真正进入变量所以需要解释)。似乎没有一个与我的具体需求直接相关。
由于
答案 0 :(得分:0)
像这样(未经测试):
select player_id, avg(substring_index(substring_index(scores,',',round),',',-1))
from
(
select 1 round union all select 2 union all select 3
) last_rounds
cross join
(
select player_id, group_concat(score order by round_date desc) scores
from player_round
group by player_id
having count(*) >= 3
) player_scores
group by player_id