From: | wstrzalka <wstrzalka(at)gmail(dot)com> |
---|---|
To: | pgsql-sql(at)postgresql(dot)org |
Subject: | Re: ordered by join? ranked aggregate? how to? |
Date: | 2009-09-15 08:10:50 |
Message-ID: | e7466943-6f25-49fd-82bd-6e4050e59045@p23g2000vbl.googlegroups.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On 15 Wrz, 09:56, andreas(dot)kretsch(dot)(dot)(dot)(at)schollglas(dot)com ("A. Kretschmer")
wrote:
> In response to wstrzalka :
>
>
>
> > What I need is to join 2 tables
>
> > CREATE TABLE master(
> > id INT4
> > );
>
> > CREATE TABLE slave (
> > master_id INT4,
> > rank INT4,
> > value TEXT);
>
> > What I need is to make the query:
>
> > SELECT m.id, array_agg(s.value) AS my_problematic_array
> > FROM master AS m LEFT JOIN slave AS s ON (m.id = s.master_id)
> > GROUP BY m.id;
>
> Faster solution (compared to my other email):
>
> test=# select id, array_agg(value) from (SELECT m.id, s.value FROM
> master AS m LEFT JOIN slave AS s ON (m.id = s.master_id) order by 1,2)
> foo group by 1;
> id | array_agg
> ----+-----------
> 1 | {3,5,7}
> 2 | {NULL}
> (2 rows)
>
> Andreas
> --
> Andreas Kretschmer
> Kontakt: Heynitz: 035242/47150, D1: 0160/7141639 (mehr: -> Header)
>
> --
> Sent via pgsql-sql mailing list (pgsql-(dot)(dot)(dot)(at)postgresql(dot)org)
> To make changes to your subscription:http://www.postgresql.org/mailpref/pgsql-sql
Yes. And No :)
The problem is that in original query the aggregate can be used more
then once :/
So in fact it's like:
SELECT m.id, array_agg(s1.value), array_agg(s2.value)
FROM master AS m LEFT JOIN slave AS s1 ON (m.id = s1.master_id AND
SOME_CONDITION_ON_S1)
LEFT JOIN slave AS s2 ON (m.id =
s2.master_id AND SOME_OTHER_CONDITION_ON_S1)
GROUP BY m.id;
From | Date | Subject | |
---|---|---|---|
Next Message | wstrzalka | 2009-09-15 08:12:59 | Re: ordered by join? ranked aggregate? how to? |
Previous Message | A. Kretschmer | 2009-09-15 07:56:05 | Re: ordered by join? ranked aggregate? how to? |