Не могли бы вы попробовать следующий SQL-запрос, который рассчитывает среднее значение за 9 недель (на самом деле сейчас недели, но следующие 9 строк, включая себя в отсортированных данных по столбцу номеров ROW, id)
with cte as (
select
cast(substring(id,4,length(id)) as integer) as rid,
id,week1,demand
from demands
)
select
c.*,
(select sum(t.demand) from cte t where t.rid between c.rid and (8 + c.rid)) as smm
from cte c;