कोशिश करें:
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
यदि आप वास्तव में पिछले सप्ताह का योग चाहते हैं, तो "औसत (दैनिक) से अधिक ...." को योग (औसत के बजाय) से बदलें। अपने शीर्षक में आप कहते हैं कि आप औसत चाहते हैं लेकिन बाद में आप कहते हैं कि आप राशि चाहते हैं। क्वेरी इसके अलावा समान होनी चाहिए, इसलिए आप जो भी वास्तव में चाहते हैं उसका उपयोग करें।
जैसा कि गॉर्डन द्वारा बताया गया था, यह मूल रूप से पिछली 6 तिथियों का औसत है जिसमें उत्पाद का उपयोग किया गया था, जो कि पिछले 6 दिनों से अधिक हो सकता है यदि टेबल पर उस उत्पाद के लिए बिना किसी पंक्ति के दिन हैं क्योंकि यह था ' टी बिल्कुल इस्तेमाल किया। इसे दूर करने के लिए आप एक तिथि तालिका और अपनी उत्पाद तालिका का उपयोग कर सकते हैं।