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

Postgresql में अधिकतम एक कॉलम वाली पंक्तियाँ लौटाएँ

Postgres विंडो फ़ंक्शन का समर्थन करता है जो इस स्थिति के अनुकूल हो:

select date, symbol, value, created_time
from (select *,
    rank() over (partition by date, symbol order by created_time desc) as rownum
  from test_table) x
where rownum = 1

date . के हर संयोजन के लिए , symbol , यह क्वेरी value लौटाती है और created_time उच्चतम वाली पंक्ति से (अर्थात अंतिम ) created_time उस date . का और symbol

मैं इस सूचकांक का सुझाव दूंगा:

CREATE UNIQUE INDEX test_table_idx 
  ON test_table (date, symbol, created_time, value)

यह एक आवरण है अनुक्रमणिका (आपके पास क्वेरी के लिए आवश्यक सभी मान हैं, वास्तविक तालिका तक पहुँचने की आवश्यकता को समाप्त करते हुए, और जो आपके पास पहले से था), लेकिन ध्यान दें कि created_time पहले . आता है value , इसलिए डेटा पहले से ही अपने विभाजन क्रम में है, और value कम से कम महत्वपूर्ण विशेषता है, क्योंकि यह किसी भी निर्धारण में भाग नहीं लेती है कि किस पंक्ति में वापस आना है।



  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 में सबस्ट्रिंग के बीच अंतर

  2. PostgreSQL का उपयोग करके जियोलोकेशन के लिए PGpoint के साथ कैसे काम करें?

  3. मिलान किए गए सरणी तत्वों को बाहर करें

  4. तालिकाओं में परिवर्तन के बारे में स्वचालित सूचनाएं कैसे प्राप्त करें?

  5. क्लाउड विक्रेता डीप-डाइव:DigitalOcean पर PostgreSQL