Re: ordered by join? ranked aggregate? how to?

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;

In response to

Responses

Browse pgsql-sql by date

  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?