Försök:
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
Fiol:
http://sqlfiddle.com/#!6/f674a7/4/0
Ersätt "avg(dailusage) over...." med summa (snarare än avg) om det du verkligen vill ha är summan för den senaste veckan. I din titel säger du att du vill ha genomsnittet men senare säger du att du vill ha summan. Frågan bör vara densamma förutom det, så använd vilken du faktiskt vill.
Som påpekades av Gordon är detta i princip genomsnittet av de senaste 6 datumen då produkten användes, vilket kan vara mer än bara de senaste 6 dagarna om det finns dagar utan några rader för den produkten på bordet eftersom det var inte används alls. För att komma runt det kan du använda en datumtabell och din produkttabell.