मूविंग एवरेज या रोलिंग एवरेज आपको पिछले 7 दिनों की तरह चलती अवधि में औसत की गणना करने की अनुमति देता है। दैनिक संख्याओं को ट्रैक करने की तुलना में समय के साथ चलती औसत की गणना करना आसान प्रवृत्ति देता है। यहाँ PostgreSQL में मूविंग एवरेज की गणना करने के लिए SQL क्वेरी है।
PostgreSQL में मूविंग एवरेज की गणना कैसे करें
यहां बताया गया है कि PostgreSQL में मूविंग एवरेज की गणना कैसे करें। मान लें कि आपके पास निम्न तालिका है
postgres=# create table sales(order_date date,sale int);
postgres=# insert into sales values('2020-04-01',210),
('2020-04-02',125),('2020-04-03',150),('2020-04-04',230),
('2020-04-05',200),('2020-04-10',220),('2020-04-06',25),
('2020-04-07',215),('2020-04-08',300),('2020-04-09',250);
postgres=# select * from sales;
order_date | sale
------------+------
2020-04-01 | 210
2020-04-02 | 125
2020-04-03 | 150
2020-04-04 | 230
2020-04-05 | 200
2020-04-10 | 220
2020-04-06 | 25
2020-04-07 | 215
2020-04-08 | 300
2020-04-09 | 250
बोनस पढ़ें :PostgreSQL में CSV फ़ाइल कैसे आयात करें
मान लें कि आप पिछले 5 दिनों के लिए PostgreSQL में मूविंग एवरेज की गणना करना चाहते हैं। PostgreSQL आपको विंडो फ़ंक्शंस की मदद से रोलिंग औसत की गणना करने की अनुमति देता है। यहाँ पिछले 5 दिनों के लिए PostgreSQL में मूविंग एवरेज की गणना करने की क्वेरी है। हम इसे विस्तार से देखेंगे
SELECT a.order_date,a.sale,
AVG(a.sale)
OVER(ORDER BY a.order_date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW)
AS avg_sales
FROM sales a ;
order_date | sale | avg_sales
------------+------+----------------------
2020-04-01 | 210 | 210.00
2020-04-02 | 125 | 167.50
2020-04-03 | 150 | 161.66
2020-04-04 | 230 | 178.75
2020-04-05 | 200 | 183.00
2020-04-06 | 25 | 146.00
2020-04-07 | 215 | 164.00
2020-04-08 | 300 | 194.00
2020-04-09 | 250 | 198.00
2020-04-10 | 220 | 202.00
उपरोक्त क्वेरी में, AVG फ़ंक्शन बिक्री . के औसत मूल्य की गणना करता है कॉलम। जब हम इसे विंडो फ़ंक्शन OVER के साथ उपयोग करते हैं, तो यह केवल हमारे द्वारा परिभाषित समय विंडो के लिए औसत की गणना करता है।
PostgreSQL में मूविंग एवरेज की गणना करने के लिए, हम पहले ORDER BY क्लॉज का उपयोग करके पंक्तियों को कालानुक्रमिक रूप से क्रमबद्ध करते हैं। फिर हम 4 पूर्ववर्ती और वर्तमान पंक्ति के बीच पंक्तियों का उपयोग करके औसत की गणना के लिए हमारी विंडो को परिभाषित करते हैं। इसका मतलब है कि प्रत्येक पंक्ति के लिए केवल वर्तमान पंक्ति और पूर्ववर्ती 4 पंक्तियों के लिए औसत की गणना करें। इसलिए प्रत्येक पंक्ति के लिए केवल पिछले 5 दिनों के मूल्यों पर विचार किया जाता है।
आप उपरोक्त SQL क्वेरी में WHERE क्लॉज़ और ROUND फ़ंक्शन जोड़कर फ़िल्टर और गोल औसत मान भी जोड़ सकते हैं।
SELECT a.order_date,a.sale,
round(AVG(a.sale)
OVER(ORDER BY a.order_date ROWS BETWEEN 4 PRECEDING AND CURRENT ROW),2)
AS avg_sales
FROM sales a
WHERE condition; बोनस पढ़ें:PostgreSQL में मासिक वृद्धि की गणना करें
PostgreSQL में 30-दिवसीय चलती औसत की गणना कैसे करें
इसी तरह, यदि आप PostgreSQL में 30-दिवसीय चलती औसत की गणना करना चाहते हैं, तो आप 29 पूर्ववर्ती पंक्तियों और वर्तमान पंक्ति पर विचार करके उपरोक्त क्वेरी को संशोधित कर सकते हैं।
SELECT a.order_date,a.sale,
AVG(a.sale)
OVER(ORDER BY a.order_date ROWS BETWEEN 29 PRECEDING AND CURRENT ROW)
AS avg_sales
FROM sales a ;
PostgreSQL में 3 महीने के मूविंग एवरेज की गणना कैसे करें
यदि आपके पास दैनिक बिक्री डेटा है, और PostgreSQL में 3 महीने की चलती औसत की गणना करना चाहते हैं, तो आप 89 पूर्ववर्ती पंक्तियों और वर्तमान पंक्ति पर विचार करके उपरोक्त क्वेरी को संशोधित कर सकते हैं।
SELECT a.order_date,a.sale,
AVG(a.sale)
OVER(ORDER BY a.order_date ROWS BETWEEN 89 PRECEDING AND CURRENT ROW)
AS avg_sales
FROM sales a ;
मान लें कि आपके पास दैनिक डेटा के बजाय मासिक डेटा है, और आप पिछले 3 महीनों के रोलिंग औसत की गणना करना चाहते हैं
postgres=# create table monthly_sales(order_month date,sale int);
postgres=# insert into monthly_sales values('2019-12-01',120),
('2020-01-30',250),('2020-02-28',150),('2020-03-31',300),
('2020-04-30',200),('2020-05-31',200),('2020-06-30',250),
('2020-07-31',150),('2020-08-31',300),('2020-09-30',200);
postgres=# select * from monthly_sales;
order_month | sale
-------------+------
2019-12-01 | 120
2020-01-30 | 250
2020-02-28 | 150
2020-03-31 | 300
2020-04-30 | 200
2020-05-31 | 200
2020-06-30 | 250
2020-07-31 | 150
2020-08-31 | 300
2020-09-30 | 200
बोनस पढ़ें:SQL में अवधारण दर की गणना कैसे करें
हम PostgreSQL में रोलिंग औसत की गणना करने के लिए ऊपर के समान तर्क का उपयोग करते हैं। सबसे पहले, हम पंक्तियों को कालानुक्रमिक रूप से क्रमबद्ध करते हैं, और फिर दो पंक्तियों से पहले के लिए औसत की गणना करने के लिए ओवर विंडो फ़ंक्शन का उपयोग करते हैं। और वर्तमान पंक्ति ।
SELECT a.order_month,a.sale,
round(AVG(a.sale)
OVER(ORDER BY a.order_month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW),2)
AS avg_sales
FROM monthly_sales a ;
order_month | sale | avg_sales
-------------+------+-----------
2019-12-01 | 120 | 120.00
2020-01-30 | 250 | 185.00
2020-02-28 | 150 | 173.33
2020-03-31 | 300 | 233.33
2020-04-30 | 200 | 216.67
2020-05-31 | 200 | 233.33
2020-06-30 | 250 | 216.67
2020-07-31 | 150 | 200.00
2020-08-31 | 300 | 233.33
2020-09-30 | 200 | 216.67
बोनस पढ़ें:PostgreSQL में पिवट टेबल कैसे बनाएं
आप उपरोक्त SQL क्वेरी में WHERE क्लॉज को शामिल करके फ़िल्टर भी जोड़ सकते हैं।
SELECT a.order_month,a.sale,
round(AVG(a.sale)
OVER(ORDER BY a.order_month ROWS BETWEEN 2 PRECEDING AND CURRENT ROW),2)
AS avg_sales
FROM monthly_sales a
WHERE condition; आप अपनी आवश्यकताओं के अनुसार, PostgreSQL में मूविंग एवरेज की गणना करने के लिए उपरोक्त क्वेरी को कस्टमाइज़ कर सकते हैं।
PostgreSQL में मूविंग एवरेज की गणना करने के बाद, आप चार्टिंग टूल का उपयोग करके इसे लाइन चार्ट पर प्लॉट कर सकते हैं और इसे अपनी टीम के साथ साझा कर सकते हैं। यहां एक लाइन चार्ट का उदाहरण दिया गया है जो Ubiq का उपयोग करके बनाए गए मूविंग एवरेज की कल्पना करता है।
यदि आप PostgreSQL डेटाबेस से चार्ट, डैशबोर्ड और रिपोर्ट बनाना चाहते हैं, तो आप Ubiq आज़मा सकते हैं। हम एक 14-दिवसीय नि:शुल्क परीक्षण की पेशकश करते हैं।