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

समान अंतराल वाले अंतराल पर एकाधिक औसत

मेरा सुझाव है कि आसान कार्य width_bucket() :

प्रत्येक समय खंड ("बिन") का औसत प्राप्त करने के लिए:

SELECT width_bucket(extract(epoch FROM t.the_date)
                  , x.min_epoch, x.max_epoch, x.bins) AS bin
     , avg(value) AS bin_avg
FROM   tbl t
    , (SELECT extract(epoch FROM min(the_date)) AS min_epoch
            , extract(epoch FROM max(the_date)) AS max_epoch
            , 10 AS bins
       FROM   tbl t
      ) x
GROUP  BY 1;

(चरण-दर-चरण) बढ़ते समय अंतराल पर "रनिंग एवरेज" प्राप्त करने के लिए:

SELECT bin, round(sum(bin_sum) OVER w /sum(bin_ct) OVER w, 2) AS running_avg
FROM  (
   SELECT width_bucket(extract(epoch FROM t.the_date)
                     , x.min_epoch, x.max_epoch, x.bins) AS bin
        , sum(value) AS bin_sum
        , count(*)   AS bin_ct
   FROM   tbl t
       , (SELECT extract(epoch FROM min(the_date)) AS min_epoch
               , extract(epoch FROM max(the_date)) AS max_epoch
               , 10 AS bins
          FROM   tbl t
         ) x
   GROUP  BY 1
   ) sub
WINDOW w AS (ORDER BY bin)
ORDER  BY 1;

the_date Using का उपयोग करना date . के बजाय कॉलम नाम के रूप में, आरक्षित शब्दों से परहेज करते हुए पहचानकर्ता के रूप में।
चूंकि width_bucket() वर्तमान में केवल double precision के लिए लागू किया गया है और numeric , मैं the_date . से युग मान निकालता हूं . विवरण यहाँ:
पोस्टग्रेएसक्यूएल में एग्रीगेटिंग (एक्स, वाई) समन्वय बिंदु बादल



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. रेल ऐप में हेरोकू पोस्टग्रेएसक्यूएल GROUP_BY त्रुटि

  2. जोड़ीदार सरणी योग कुल कार्य?

  3. पोस्टग्रेज़ क्वेरी JSON ऐरे जिसमें कुछ शामिल है

  4. Oracle से PostgreSQL:माइग्रेट करने के कारण

  5. पोस्टग्रेज/हाइबरनेट ऑपरेटर मौजूद नहीं है:टेक्स्ट =बाइटिया