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

5 मिनट की अवधि के आधार पर समूहीकृत रिकॉर्ड का औसत चुनना

SELECT grid.t5
      ,min(t."time") AS min_time
--    ,array_agg(extract(min FROM t."time")) AS 'players_on' -- optional
      ,avg(t.players) AS avg_players
      ,avg(t.servers) AS avg_servers
FROM (
   SELECT generate_series(min("time")
                         ,max("time"), interval '5 min') AS t5
   FROM tbl
   ) grid
LEFT JOIN tbl t ON t."time" >= grid.t5
               AND t."time" <  grid.t5 +  interval '5 min'
GROUP  BY grid.t5
ORDER  BY grid.t5;

व्याख्या करें

  • सबक्वेरी grid न्यूनतम से अधिकतम "time" . तक प्रत्येक 5 मिनट के लिए एक पंक्ति उत्पन्न करता है आपकी तालिका में।

  • LEFT 5-मिनट के अंतराल में डेटा स्लाइसिंग तालिका में वापस शामिल हों। ध्यान से शामिल करें निचली सीमा और बहिष्कृत करें ऊपरी सीमा।

  • जहां कुछ नहीं हुआ वहां 5-मिनट के स्लॉट ड्रॉप करने के लिए, JOIN . का उपयोग करें LEFT JOIN . के स्थान पर ।

  • अपना ग्रिड-टाइम 0:00, 5:00 आदि पर शुरू करने के लिए, min("time") को राउंड डाउन करें में generate_series()

इन संबंधित उत्तरों में अधिक स्पष्टीकरण:
Group by डेटा अंतराल
पोस्टग्रेएसक्यूएल:एक क्वेरी के लिए पंक्तियों की संख्या 'मिनट के अनुसार' चल रही है

इसके अलावा:मैं time का उपयोग नहीं करूंगा पहचानकर्ता के रूप में। यह एक मानक SQL में आरक्षित शब्द है और Postgres में एक फ़ंक्शन / प्रकार का नाम।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. जब मैं एक कुंजी द्वारा एकत्रित करता हूं तो मैं निर्भर कॉलम को 'ग्रुप बाय' से बाहर क्यों नहीं कर सकता?

  2. date_sub mysql के साथ ठीक है, postgresql के साथ है

  3. क्या pg_depend को फिर से बनाना संभव है?

  4. PostgreSQL - लेनदेन ब्लॉक के बाहर कोड से VACUUM कैसे चलाएं?

  5. AWS में Kubernetes क्लस्टर से पोस्टग्रेज RDS को एक्सेस करना