मूविंग एवरेज और टोटल्स

PostgreSQL Summary Stats और Window Functions

Michel Semaan

Moving averages

ओवरव्यू

  • मूविंग एवरेज (MA): आखिरी n पीरियड्स का औसत
    • उदाहरण: सेल्स में 10-दिन का MA, पिछले 10 दिनों में बेची गई यूनिट्स का औसत है
    • मोमेंटम/ट्रेंड दिखाने के लिए उपयोगी
    • सीजनैलिटी घटाने में भी सहायक
  • मूविंग टोटल: आखिरी n पीरियड्स का योग
    • उदाहरण: पिछली 3 ओलंपिक गेम्स के मेडल्स का योग
    • परफॉर्मेंस दिखाने के लिए; अगर योग घट रहा है, तो कुल परफॉर्मेंस घट रही है
PostgreSQL Summary Stats और Window Functions

सोर्स टेबल

क्वेरी

SELECT
  Year, COUNT(*) AS Medals
FROM Summer_Medals
WHERE
  Country = 'USA'
  AND Medal = 'Gold'
  AND Year >= 1980
GROUP BY Year
ORDER BY Year ASC;

परिणाम

| Year | Medals |
|------|--------|
| 1984 | 168    |
| 1988 | 77     |
| 1992 | 89     |
| 1996 | 160    |
| 2000 | 130    |
| 2004 | 116    |
| 2008 | 125    |
| 2012 | 147    |
PostgreSQL Summary Stats और Window Functions

मूविंग एवरेज

क्वेरी

WITH US_Medals AS (...)

SELECT
  Year, Medals,
  AVG(Medals) OVER
    (ORDER BY Year ASC
     ROWS BETWEEN
     2 PRECEDING AND CURRENT ROW) AS Medals_MA
FROM US_Medals
ORDER BY Year ASC;

परिणाम

| Year | Medals | Medals_MA |
|------|--------|-----------|
| 1984 | 168    | 168.00    |
| 1988 | 77     | 122.50    |
| 1992 | 89     | 111.33    |
| 1996 | 160    | 108.67    |
| 2000 | 130    | 126.33    |
| 2004 | 116    | 135.33    |
| 2008 | 125    | 123.67    |
| 2012 | 147    | 129.33    |
PostgreSQL Summary Stats और Window Functions

मूविंग टोटल

क्वेरी

WITH US_Medals AS (...)

SELECT
  Year, Medals,
  SUM(Medals) OVER
    (ORDER BY Year ASC
     ROWS BETWEEN
     2 PRECEDING AND CURRENT ROW) AS Medals_MT
FROM US_Medals
ORDER BY Year ASC;

परिणाम

| Year | Medals | Medals_MT |
|------|--------|-----------|
| 1984 | 168    | 168       |
| 1988 | 77     | 245       |
| 1992 | 89     | 334       |
| 1996 | 160    | 326       |
| 2000 | 130    | 379       |
| 2004 | 116    | 406       |
| 2008 | 125    | 371       |
| 2012 | 147    | 388       |
PostgreSQL Summary Stats और Window Functions

ROWS बनाम RANGE

  • RANGE BETWEEN [START] AND [FINISH]
    • ROWS BETWEEN की तरह ही काम करता है
    • RANGE, OVER की ORDER BY सबक्लॉज में डुप्लिकेट्स को एक इकाई मानता है

टेबल

| Year | Medals | Rows_RT | Range_RT |
|------|--------|---------|----------|
| 1992 | 10     | 10      | 10       |
| 1996 | 50     | 60      | 110      |
| 2000 | 50     | 110     | 110      |
| 2004 | 60     | 170     | 230      |
| 2008 | 60     | 230     | 230      |
| 2012 | 70     | 300     | 300      |
  • RANGE BETWEEN की तुलना में लगभग हमेशा ROWS BETWEEN ही उपयोग होता है
PostgreSQL Summary Stats और Window Functions

अभ्यास करते हैं!

PostgreSQL Summary Stats और Window Functions

Preparing Video For Download...