मेरे पास एक सारणी है जो किसी विशेष उपयोगकर्ता के मित्रों को सूचीबद्ध करती है:

User_id | दोस्त_नाम

1 | योएल

1 | जैक

2 | मारिया

मैं उन्हें user_id द्वारा समूहीकृत करना चाहता हूं और प्रत्येक पंक्ति में सभी दोस्तों के साथ एक सरणी है।

चयन कैसे कर सकते हैं जो इस परिवर्तन को करेगा?

अपडेट करें:

User_id द्वारा अपने_टेबल समूह से user_id, array_agg(friend_name) को दोस्तों के रूप में चुनें

ठीक काम करता है।

हालांकि मैं एक छोटा सा विवरण भूल गया, तालिका में एक और कॉलम है।

User_id | दोस्त_नाम | दोस्तों_आयु

1 | जोएल | 21

1 | जैक | 30

2 | मारिया | 25

मेरा समाधान एक और array_agg जोड़ना था:

select user_id, array_agg(friend_name),  array_agg(friend_age)as friends
from your_table
group by user_id

मेरा मानना ​​​​है कि यह काम करता है, एकमात्र समस्या तब होती है जब उम्र शून्य होती है, उस स्थिति में, मुझे एक मामला जोड़ने की आवश्यकता होती है जब खंड।

select user_id, array_agg(friend_name),  
array_agg(CASE friend_age IS NULL THEN 0 ELSE friend_age END)as friends
from your_table
group by user_id
0
Thadeu Antonio Ferreira Melo 23 अक्टूबर 2020, 23:21

1 उत्तर

सबसे बढ़िया उत्तर
select user_id, array_agg(friend_name) as friends
from your_table
group by user_id
2
Mikhail Berlyant 23 अक्टूबर 2020, 23:24