我正在使用MySQL 7.3
我已经根据Stackoverflow here的需求调整了另一个答案,但是无法正常工作。我想计算NFL球员的幻想得分的滚动(移动)平均值。
我认为问题可能在于数据不是按Player顺序在数据库中,而是按Game_ID顺序在数据库中。.但我不知道。它仅计算出每个玩家的5个游戏滚动平均值。
该表具有以下这些列:玩家,游戏ID,日期和DK_Total_FP,其中DK_Total_FP是在单场比赛中获得的幻想分。
这是我的查询
(x**2).sum()/len(x)
尽管此数据按播放器顺序显示数据(用于测试,而无需我提供100条线)
select
rnk_curr.Date, rnk_curr.Player,rnk_curr.Game_ID, ROUND(avg(rnk_prev5.DK_Total_FP),2) AS "5 match rolling Av",rnk_curr.DK_Total_FP
from
(
select Date,Player,Game_ID,DK_Total_FP,
@row_num := if(@lag = Game_ID, @row_num + 1,
if(@lag := Game_ID, 1, 1)) as row_num
from nfl_stats
cross join ( select @row_num := 1, @lag := null ) params
order by Player,Game_ID
) rnk_curr
inner join
(
select date, Player, DK_Total_FP,
@row_num := if(@lag = Game_ID, @row_num + 1,
if(@lag := Game_ID, 1, 1)) as row_num
from nfl_stats
cross join ( select @row_num := 1, @lag := null ) params
order by Player, Game_ID
) rnk_prev5
on rnk_curr.Player = rnk_prev5.Player
and rnk_prev5.row_num - 1 between rnk_curr.row_num - 6 and rnk_curr.row_num
group by Game_ID
order by Player,Date DESC
答案 0 :(得分:0)
对于8之前的MySQL版本,请考虑以下内容:
plot for [i=1:56] filename(i) u 1:2:3 with points pt 5 lc palette, \
'filename.dat' u 1:2 with lines
这种问题在MySQL 8+中得到了大大简化