Coba:
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
Biola:
http://sqlfiddle.com/#!6/f674a7/4/0
Ganti "avg(dailusage) over...." dengan sum (bukan avg) jika yang Anda inginkan adalah jumlah selama seminggu terakhir. Dalam judul Anda, Anda mengatakan bahwa Anda menginginkan rata-rata tetapi kemudian Anda mengatakan bahwa Anda menginginkan jumlahnya. Kueri harus sama selain itu, jadi gunakan yang mana pun yang Anda inginkan.
Seperti yang ditunjukkan oleh Gordon ini pada dasarnya adalah rata-rata dari 6 tanggal terakhir di mana produk tersebut digunakan, yang mungkin lebih dari hanya 6 hari terakhir jika ada hari tanpa baris untuk produk tersebut di atas meja karena tidak t digunakan sama sekali. Untuk menyiasatinya, Anda dapat menggunakan tabel tanggal dan tabel produk Anda.