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

डेटा अंतराल के आधार पर समूहित करें

WITH t AS (
   SELECT ts, (random()*100)::int AS bandwidth
   FROM   generate_series('2012-09-01', '2012-09-04', '1 minute'::interval) ts
   )

SELECT date_trunc('hour', ts) AS hour_stump
      ,(extract(minute FROM ts)::int / 15) AS min15_slot
      ,count(*) AS rows_in_timeslice               -- optional
      ,sum(bandwidth) AS sum_bandwidth
FROM   t
WHERE  ts >= '2012-09-02 00:00:00+02'::timestamptz -- user's time range
AND    ts <  '2012-09-03 00:00:00+02'::timestamptz -- careful with borders 
GROUP  BY 1, 2
ORDER  BY 1, 2;

सीटीई t आपकी तालिका जैसा डेटा प्रदान करता है:एक टाइमस्टैम्प ts प्रति मिनट bandwidth . के साथ संख्या। (आपको उस हिस्से की आवश्यकता नहीं है, आप इसके बजाय अपनी तालिका के साथ काम करते हैं।)

यहां एक समान प्रश्न के लिए एक बहुत ही समान समाधान है - विस्तृत विवरण के साथ कि यह विशेष एकत्रीकरण कैसे काम करता है:

    पोस्टग्रेएसक्यूएल में
  • date_trunc 5 मिनट का अंतराल

दौड़ने . से संबंधित एक समान प्रश्न के लिए यहां एक समान समाधान दिया गया है रकम - इस्तेमाल किए गए विभिन्न कार्यों के लिए विस्तृत विवरण और लिंक के साथ:

  • PostgreSQL:किसी क्वेरी के लिए 'मिनट के हिसाब से' पंक्तियों की चल रही गिनती

टिप्पणी में अतिरिक्त प्रश्न

WITH -- same as above ...

SELECT DISTINCT ON (1,2)
       date_trunc('hour', ts) AS hour_stump
      ,(extract(minute FROM ts)::int / 15) AS min15_slot
      ,bandwidth AS bandwith_sample_at_min15
FROM   t
WHERE  ts >= '2012-09-02 00:00:00+02'::timestamptz
AND    ts <  '2012-09-03 00:00:00+02'::timestamptz
ORDER  BY 1, 2, ts DESC;

एकप्राप्त करता है प्रति 15 मिनट के अंतराल पर गैर-समेकित नमूना - अंतिम उपलब्ध पंक्ति . से खिड़की में। यह 15 वां मिनट होगा यदि पंक्ति गायब नहीं है। महत्वपूर्ण भाग हैं DISTINCT ON और ORDER BY .
प्रयुक्त तकनीक के बारे में अधिक जानकारी यहाँ:

  • समूह द्वारा प्रत्येक समूह में पहली पंक्ति का चयन करें?


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PostgreSQL 11 - प्रक्रियाएं

  2. क्या postgresql में वैश्विक चर परिभाषित करना संभव है?

  3. PostgreSQL - डेटाबेस का नाम बदलें

  4. WHERE क्लॉज में एक ही कॉलम को कई बार इस्तेमाल करना

  5. PostgreSQL में दोष सहिष्णुता का विकास:तुल्यकालिक प्रतिबद्धता