I'm using MySQL 7.3
I have adapted another answer to my on needs from Stackoverflow here but can't get it working. I want to calculate the rolling (moving) average of fantasy points for NFL players.
I think the problem may be that the data is not in the DB in Player order but Game_ID order..but I don't know. It calculates something just not the 5 game rolling average for each player.
The table has these columns Player, Game_ID, Date and DK_Total_FP where DK_Total_FP are the fantasy points awarded in a singe match.
This is my query
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
Although this data show the data in Player order (for testing without me providing 100s of lines)
CREATE TABLE `nfl_stats` (
`Player` varchar(50) DEFAULT NULL,
`Date` datetime DEFAULT NULL,
`Game_ID` varchar(50) DEFAULT NULL,
`DK_Total_FP` varchar(50) DEFAULT NULL
);
INSERT INTO `nfl_stats` (`Player`, `Date`, `Game_ID`, `DK_Total_FP`) VALUES
('Aaron Burbridge', '2016-09-18 00:00:00', '201609180car', '0'),
('Aaron Burbridge', '2016-10-02 00:00:00', '201610020sfo', '1.5'),
('Aaron Burbridge', '2016-11-06 00:00:00', '201611060sfo', '0'),
('Aaron Burbridge', '2016-11-20 00:00:00', '201611200sfo', '0'),
('Aaron Burbridge', '2016-10-23 00:00:00', '201610230sfo', '1.5'),
('Aaron Burbridge', '2016-12-24 00:00:00', '201612240ram', '3.5'),
('Aaron Burbridge', '2017-01-01 00:00:00', '201701010sfo', '3.4'),
('Aaron Burbridge', '2016-12-18 00:00:00', '201612180atl', '4.9'),
('Aaron Jones', '2018-11-15 00:00:00', '201811150sea', '27.3'),
('Aaron Jones', '2018-12-02 00:00:00', '201812020gnb', '15.2'),
('Aaron Jones', '2018-12-09 00:00:00', '201812090gnb', '19.6'),
('Aaron Jones', '2018-11-25 00:00:00', '201811250min', '18.3'),
('Aaron Jones', '2018-11-04 00:00:00', '201811040nwe', '9.5'),
('Aaron Jones', '2018-10-28 00:00:00', '201810280ram', '16.6'),
('Aaron Jones', '2018-11-11 00:00:00', '201811110gnb', '35.2');