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

Поиск
Список
Период
Сортировка
От wstrzalka
Тема Re: ordered by join? ranked aggregate? how to?
Дата
Msg-id e7466943-6f25-49fd-82bd-6e4050e59045@p23g2000vbl.googlegroups.com
обсуждение исходный текст
Ответ на ordered by join? ranked aggregate? how to?  (wstrzalka <wstrzalka@gmail.com>)
Список pgsql-sql
On 15 Wrz, 09:56, andreas.kretsch...@schollglas.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-...@postgresql.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;


В списке pgsql-sql по дате отправления:

Предыдущее
От: Mario Splivalo
Дата:
Сообщение: CREATE INDEX on column of type 'point'
Следующее
От: wstrzalka
Дата:
Сообщение: Re: ordered by join? ranked aggregate? how to?