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

PostgreSQL में महीने के हिसाब से ग्रुप कैसे करें

समस्या:

आप PostgreSQL डेटाबेस में महीने के हिसाब से रिकॉर्ड को समूहबद्ध करना चाहेंगे।

उदाहरण:

हमारे डेटाबेस में watch कॉलम में डेटा के साथ id , name , और production_timestamp

<थ>नाम <थ>प्रोडक्शन_टाइमस्टैम्प
आईडी
1 देखो 2019-03-01 11:45:23
2 स्मार्टवॉच 2019-09-15 07:35:13
3 स्मार्टबैंड 2019-09-22 17:22:05

समाधान:

आप DATE_TRUNC() . का उपयोग कर सकते हैं महीने के हिसाब से तालिका में समूह रिकॉर्ड करने के लिए कार्य करता है।

यहां वह प्रश्न है जो आप लिखेंगे:

SELECT 
       DATE_TRUNC('month',production_timestamp)
         AS  production_to_month,
       COUNT(id) AS count 
FROM watch
GROUP BY DATE_TRUNC('month',production_timestamp);

ये रहा क्वेरी का नतीजा:

<थ>गिनती
उत्पादन_से_माह
2019-03-01 00:00:00 1
2019-09-01 00:00:00 2

चर्चा:

DATE_TRUNC() का उपयोग करें फ़ंक्शन यदि आप किसी पोस्टग्रेएसक्यूएल डेटाबेस से विशिष्ट परिशुद्धता के साथ दिनांक या समय पुनर्प्राप्त करना चाहते हैं। (हमारे उदाहरण में, हमने महीने की सटीकता का इस्तेमाल किया।)

यह फ़ंक्शन दो तर्क लेता है। सबसे पहले, हमारे पास दिनांक भाग विनिर्देशक है (हमारे उदाहरण में, 'माह')। ध्यान दें कि विनिर्देशक एक स्ट्रिंग है और इसे उद्धरणों में संलग्न करने की आवश्यकता है।

दूसरा तर्क टाइमस्टैम्प मान है; यह टाइमस्टैम्प मान या टाइमस्टैम्प कॉलम का नाम लौटाने वाला एक्सप्रेशन हो सकता है। (हमारे उदाहरण में, हम production_timestamp . कॉलम का उपयोग करते हैं )

फ़ंक्शन DATE_TRUNC() टाइमस्टैम्प को दी गई सटीकता (इस मामले में, महीने) में काट देता है। हमारे डेटाबेस में, स्मार्टवॉच उत्पादन की तारीख है 2019-09-15 07:35:13; महीने की सटीकता के लिए इसे छोटा करने के बाद, यह 2019-09-01 00:00:00 हो जाता है . महीने-स्तर की सटीकता के कारण दिन को '01' के रूप में प्रदर्शित किया जाता है और समय को शून्य से भरा जाता है। (टाइमस्टैम्प के काटे गए दिनांक भागों (जैसे दिन, महीने) को एक से बदल दिया जाता है।)

PostgreSQL में महीने के हिसाब से रिकॉर्ड बनाना बहुत आम है। हमारे उदाहरण में, प्रत्येक माह के लिए कुल उत्पादों की संख्या होती है। (COUNT() कुल फ़ंक्शन उत्पादों की संख्या की गणना करता है)। यदि आप एक समग्र फ़ंक्शन का उपयोग करके रिकॉर्ड समूहित करते हैं, तो आपको ग्रुप बाय क्लॉज का उपयोग करना होगा। ग्रुप बाय क्लॉज के बाद, आपको सेलेक्ट स्टेटमेंट में एग्रीगेट फंक्शन के साथ इस्तेमाल किए गए कॉलम या एक्सप्रेशन को रखना चाहिए। (हमारे उदाहरण में, यह DATE_TRUNC( 'month', production_timestamp) है ।)

बेशक, आपको DATE_TRUNC() . का उपयोग करने की आवश्यकता नहीं है केवल समूह रिकॉर्ड के लिए कार्य करें। आप इसका उपयोग किसी दी गई तारीख के लिए महीने का पहला दिन प्राप्त करने के लिए भी कर सकते हैं।

प्रत्येक घड़ी के लिए, नाम और उत्पादन की तारीख से महीने की सटीकता प्राप्त करें - किसी समूहीकरण की आवश्यकता नहीं है। यहां वह प्रश्न है जो आप लिखेंगे:

SELECT name,
       DATE_TRUNC('month',production_timestamp)
         AS  production_to_month
FROM watch;

ये रहा परिणाम:

<थ>उत्पादन_से_माह
नाम
देखो 2019-03-01 00:00:00
स्मार्टवॉच 2019-09-01 00:00:00
स्मार्टबैंड 2019-09-01 00:00:00

इस क्वेरी में, फ़ंक्शन DATE_TRUNC() टाइमस्टैम्प को महीने की सटीकता से छोटा करता है। हमारे डेटाबेस में, स्मार्टवॉच उत्पादन की तारीख है '2019-09-15 07:35:13'; अब यह '2019-09-01 00:00:00' , जो महीने का पहला दिन है।


  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. Postgres में दो तिथियों के बीच रविवार को छोड़कर दिनों की गणना कैसे करें?

  3. समानांतरवाद VACUUM . में आता है

  4. कैसे टैंड () PostgreSQL में काम करता है

  5. Postgresql में आईडी कॉलम स्थिति महत्वपूर्ण है?