Probeer:
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
Viool:
http://sqlfiddle.com/#!6/f674a7/4/0
Vervang "avg(dailusage) over...." door sum (in plaats van avg) als je echt de som van de afgelopen week wilt. In je titel zeg je dat je het gemiddelde wilt, maar later zeg je dat je de som wilt. De query moet verder hetzelfde zijn, dus gebruik wat je echt wilt.
Zoals Gordon opmerkte, is dit in feite het gemiddelde van de afgelopen 6 datums waarop het product is gebruikt, wat meer kan zijn dan alleen de afgelopen 6 dagen als er dagen zijn zonder rijen voor dat product op de tafel omdat het ' helemaal niet gebruikt. Om dat te omzeilen zou je een datumtabel en je producttabel kunnen gebruiken.