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

समूहन/एकत्रीकरण के दौरान सरणी मानों को संयोजित/मर्ज करें

कस्टम समुच्चय

दृष्टिकोण 1:एक कस्टम समुच्चय परिभाषित करें। यहाँ एक है जिसे मैंने पहले लिखा था।

CREATE TABLE my_test(title text, tags text[]);

INSERT INTO my_test(title, tags) VALUES
('ridealong', '{comedy,other}'),
('ridealong', '{comedy,tragedy}'),
('freddyjason', '{horror,silliness}');

CREATE AGGREGATE array_cat_agg(anyarray) (
  SFUNC=array_cat,
  STYPE=anyarray
);

select title, array_cat_agg(tags) from my_test group by title;

लेटरल क्वेरी

... या चूंकि आप आदेश को संरक्षित नहीं करना चाहते हैं और डुप्लीकेट करना चाहते हैं, आप LATERAL का उपयोग कर सकते हैं क्वेरी जैसे:

SELECT title, array_agg(DISTINCT tag ORDER BY tag) 
FROM my_test, unnest(tags) tag 
GROUP BY title;

इस मामले में आपको कस्टम कुल की आवश्यकता नहीं है। डिडुप्लीकेशन के कारण बड़े डेटा सेट के लिए यह शायद थोड़ा धीमा है। 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. Postgres में JSON फ़ील्ड पर इंडेक्स कैसे बनाएं?

  2. Oracle से PostgreSQL:ANSI बाहरी PostgreSQL में सिंटैक्स में शामिल हों

  3. बेंचमार्क संग्रह के साथ PostgreSQL परीक्षण टूल में अपडेट

  4. PSQL में DECIMAL और NUMERIC डेटाटाइप के बीच अंतर

  5. PostgreSQL में दी गई तालिका के लिए सभी ट्रिगर सूचीबद्ध करने के 3 तरीके