कस्टम समुच्चय
दृष्टिकोण 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
को हटाया जा रहा है यदि आवश्यक नहीं है, तो मदद कर सकता है।