Experimentar:
select x.*,
avg(dailyusage) over(partition by productid order by productid, date rows between 6 preceding and current row) as rolling_avg
from (select productid, date, sum(usagecount) as dailyusage
from tbl
group by productid, date) x
Violino:
http://sqlfiddle.com/#!6/f674a7/4/0
Substitua "avg(dailusage) over...." por sum (em vez de avg) se o que você realmente quer é a soma da semana passada. No seu título você diz que quer a média, mas depois diz que quer a soma. A consulta deve ser a mesma, então use a que você realmente deseja.
Como foi apontado por Gordon, esta é basicamente a média das últimas 6 datas em que o produto foi usado, que pode ser mais do que apenas os últimos 6 dias se houver dias sem nenhuma linha para esse produto na tabela porque não foi t usado em tudo. Para contornar isso, você pode usar uma tabela de datas e sua tabela de produtos.