Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर में 7 दिन के रोलिंग औसत के लिए SQL क्वेरी

कोशिश करें:

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 दिनों से अधिक हो सकता है यदि टेबल पर उस उत्पाद के लिए बिना किसी पंक्ति के दिन हैं क्योंकि यह था ' टी बिल्कुल इस्तेमाल किया। इसे दूर करने के लिए आप एक तिथि तालिका और अपनी उत्पाद तालिका का उपयोग कर सकते हैं।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या EXISTS को सीधे बिट के रूप में चुनना संभव है?

  2. SQL सर्वर में sys.sql_dependencies का उपयोग न करें (यह पदावनत है)

  3. SQL सर्वर - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 132 में ग्रुप बाय और क्लॉज का उपयोग करके डुप्लिकेट रिकॉर्ड कैसे खोजें?

  4. डेटाबेस में प्रत्येक तालिका में रिकॉर्ड की संख्या सूचीबद्ध करने की क्वेरी

  5. JDBC का उपयोग करके संग्रहीत कार्यविधि से *सब कुछ* वापस कैसे प्राप्त करें