Prova:
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
Sostituisci "avg(dailusage) over...." con sum (piuttosto che avg) se quello che vuoi veramente è la somma dell'ultima settimana. Nel tuo titolo dici di volere la media ma poi dici di volere la somma. La query dovrebbe essere la stessa diversa da quella, quindi usa quella che vuoi effettivamente.
Come è stato sottolineato da Gordon, questa è fondamentalmente la media delle ultime 6 date in cui è stato utilizzato il prodotto, che potrebbe essere più degli ultimi 6 giorni se ci sono giorni senza righe per quel prodotto sul tavolo perché era ' non usato affatto. Per aggirare il problema potresti utilizzare una tabella delle date e la tabella dei tuoi prodotti.