मैं पोस्टग्रेस्क्ल 9.3 में array_agg फ़ंक्शन को समझने की कोशिश कर रहा हूं। मैंने उन सभी के लिए एक मजेदार उदाहरण रखा है जो भाग लेने में रूचि रख सकते हैं।पोस्टग्रेस्क्ल 9.3 - array_agg चुनौती
1 9 80 के दशक से अमेरिकी फिल्मों का कोई प्रशंसक "ब्रैट पैक" से परिचित हो सकता है जो कई हिट फिल्मों में एक साथ दिखाई देता है। विकिपीडिया पर ब्रैट पैक फिल्मों के बारे में जानकारी का उपयोग करके, मैंने टेबल तैयार किए हैं जो एक साथ जुड़ने के बाद, हमें बता सकते हैं कि एक दूसरे के साथ काम किसने किया - अगर हमारे पास सही सवाल है!
/*
See: http://en.wikipedia.org/wiki/Brat_Pack_(actors)
*/
CREATE TABLE actor(
id SERIAL PRIMARY KEY,
name VARCHAR(50)
);
insert into actor(name) values ('Emilio Estevez'),('Anthony Michael Hall'),('Rob Lowe'),('Andrew McCarthy'),('Demi Moore'),('Judd Nelson'),('Molly Ringwald'),('Ally Sheedy')
CREATE TABLE movie(
id SERIAL PRIMARY KEY,
title VARCHAR(200)
);
insert into movie(title) values ('The Outsiders'),('Class'),('Sixteen Candles'),('Oxford Blues'),('The Breakfast Club'),('St. Elmos Fire'),
('Pretty in Pink'),('Blue City'),('About Last Night'),('Wisdom'), ('Fresh Horses'),('Betsys Wedding'),('Hail Caesar');
CREATE TABLE movie_brats(
id SERIAL PRIMARY KEY,
movie_id INT REFERENCES movie(id),
actor_id INT REFERENCES actor(id)
);
insert into movie_brats(movie_id, actor_id) values (1,1),(1,3),(2,3),(2,4),(3,2),(3,7),(4,3),(4,8),(5,1),(5,2),(5,6),
(5,7),(5,8),(6,1),(6,3),(6,4),(6,5),(6,6),(6,8),(7,4),(7,7),(8,6),(8,8),(9,3),(9,5),(10,1),(10,5),(11,4),(11,7),
(12,7),(12,8),(13,2),(13,6);
क्वेरी: की एक अलग सूची है जो लड़का पैक के प्रत्येक सदस्य के साथ काम किया, दोनों स्तंभों में नाम द्वारा आदेश दिया दिखाएँ
Name Worked With
----------------------------------------------------------------------------------------------------------------
Emelio Estevez | Emilio Estevez, Anthony Michael Hall, Rob Lowe, Andrew McCarthy, Demi Moore, Judd Nelson, Molly Ringwald, Ally Sheedy
*/
मेरे टूट क्वेरी:
select a1.name, array_to_string(array_agg(a2.name),', ') as Co_Stars
from actor a1, actor a2, movie m, movie_brats mb
where
m.id = mb.movie_id
and a1.id = mb.actor_id
and a2.id = mb.actor_id
group by a1.id
एक ओर ध्यान दें: आप शायद 'string_agg() चाहते हैं' 'array_to_string का एक संयोजन के बजाय()' और 'array_agg() ' –
मैंने अधिक संक्षिप्त आउटपुट –