कभी-कभी, आपको PostgreSQL में प्रति समूह पहली पंक्ति प्राप्त करने की आवश्यकता हो सकती है। सादे SQL का उपयोग करके यह एक कठिन क्वेरी हो सकती है। सौभाग्य से, PostgreSQL ऐसे डेटा एनालिटिक्स के लिए विंडो फ़ंक्शन प्रदान करता है। यहां बताया गया है कि PostgreSQL में प्रति समूह पहली पंक्ति कैसे प्राप्त करें।
PostgreSQL में प्रति समूह पहली पंक्ति कैसे प्राप्त करें
यहाँ PostgreSQL में प्रति समूह पहली पंक्ति प्राप्त करने के चरण दिए गए हैं।
मान लें कि आपके पास निम्न तालिका है product_sales जिसमें उत्पादवार बिक्री शामिल है।
postgres=# create table product_sales( product varchar(255), order_date date, sale int); postgres=# insert into product_sales(product,order_date, sale) values('A','2020-05-01',250), ('B','2020-05-01',350), ('C','2020-05-01',1250), ('A','2020-05-02',450), ('B','2020-05-02',650), ('C','2020-05-02',1050), ('A','2020-05-03',150), ('B','2020-05-03',250), ('C','2020-05-03',1850); postgres=# select * from product_sales; product | order_date | sale ---------+------------+------ A | 2020-05-01 | 250 B | 2020-05-01 | 350 C | 2020-05-01 | 1250 A | 2020-05-02 | 450 B | 2020-05-02 | 650 C | 2020-05-02 | 1050 A | 2020-05-03 | 150 B | 2020-05-03 | 250 C | 2020-05-03 | 1850
मान लीजिए कि आप प्रत्येक समूह में, यानी प्रत्येक उत्पाद के लिए पहली पंक्ति प्राप्त करना चाहते हैं। WINDOW FUNCTION का उपयोग करके आप आसानी से प्रत्येक समूह के लिए पहला रिकॉर्ड प्राप्त कर सकते हैं।
बोनस पढ़ें :PostgreSQL में रो नंबर कैसे प्राप्त करें
PostgreSQL में प्रति समूह पहली पंक्ति कैसे प्राप्त करें
प्रति समूह पहला रिकॉर्ड प्राप्त करने के लिए यहां SQL क्वेरी है। पहले हम प्रति समूह प्रत्येक रिकॉर्ड के लिए पंक्ति संख्या निर्दिष्ट करते हैं।
postgres=# select *, row_number() over (partition by product order by order_date asc) as row_number from product_sales; product | order_date | sale | row_number ---------+------------+------+------------ A | 2020-05-01 | 250 | 1 A | 2020-05-02 | 450 | 2 A | 2020-05-03 | 150 | 3 B | 2020-05-01 | 350 | 1 B | 2020-05-02 | 650 | 2 B | 2020-05-03 | 250 | 3 C | 2020-05-01 | 1250 | 1 C | 2020-05-02 | 1050 | 2 C | 2020-05-03 | 1850 | 3
उपरोक्त क्वेरी में, हम row_number() . का उपयोग करते हैं प्रत्येक रिकॉर्ड के लिए पंक्ति संख्या निर्दिष्ट करने के लिए कार्य करता है। चूंकि, हमें प्रत्येक समूह के लिए अलग-अलग पंक्तियों की संख्या की आवश्यकता होती है, इसलिए हम PARTITION WINDOW FUNCTION का उपयोग करते हैं। हम Postgresql को प्रत्येक उत्पाद . द्वारा पंक्तियों को विभाजित करने के लिए कहते हैं , अर्थात्, और प्रत्येक समूह के लिए पंक्तियों को order_date . के अनुसार क्रमबद्ध करें
इसके बाद, हमें उपरोक्त परिणाम का उपयोग उन पंक्तियों का चयन करने के लिए करना होगा जहां row_number=1
postgres=# select * from ( select *, row_number() over (partition by product order by order_date asc) as row_number from product_sales ) temp where row_number=1; product | order_date | sale | row_number ---------+------------+------+------------ A | 2020-05-01 | 250 | 1 B | 2020-05-01 | 350 | 1 C | 2020-05-01 | 1250 | 1
उपरोक्त क्वेरी आपको प्रत्येक समूह में पहला रिकॉर्ड देगी।
बोनस पढ़ें :PostgreSQL में पर्सेंटाइल की गणना कैसे करें
PostgreSQL में प्रति समूह अंतिम पंक्ति कैसे प्राप्त करें
यदि आप PostgreSQL में प्रति समूह अंतिम पंक्ति प्राप्त करना चाहते हैं, तो बस उपरोक्त क्वेरी के PARTITION खंड में क्रम को आरोही से अवरोही में बदलें।
postgres=# select * from ( select *, row_number() over (partition by product order by order_date desc) as row_number from product_sales ) temp where row_number=1; product | order_date | sale | row_number ---------+------------+------+------------ A | 2020-05-03 | 150 | 1 B | 2020-05-03 | 250 | 1 C | 2020-05-03 | 1850 | 1
उम्मीद है, आप PostgreSQL में प्रत्येक समूह में पहला रिकॉर्ड प्राप्त कर सकते हैं।
Ubiq मिनटों में डेटा को विज़ुअलाइज़ करना और रीयल-टाइम डैशबोर्ड में मॉनिटर करना आसान बनाता है। इसे आज ही आजमाएं!