Опитайте:
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
Цигулка:
http://sqlfiddle.com/#!6/f674a7/4/0
Заменете "avg(dailusage) over..." със sum (а не avg), ако това, което наистина искате, е сумата за изминалата седмица. В заглавието си казвате, че искате средната стойност, но по-късно казвате, че искате сумата. Заявката трябва да е същата, освен тази, така че използвайте каквото всъщност искате.
Както беше посочено от Гордън, това е основно средната стойност от последните 6 дати, в които продуктът е бил използван, което може да бъде повече от само последните 6 дни, ако има дни без редове за този продукт в таблицата, защото е не се използва изобщо. За да го заобиколите, можете да използвате таблица с дати и таблица с продуктите си.