Re: adding "order by" to a "group by" query

Поиск
Список
Период
Сортировка
От Scott Marlowe
Тема Re: adding "order by" to a "group by" query
Дата
Msg-id dcc563d10812060940q73648b1oa00c8b174804dc24@mail.gmail.com
обсуждение исходный текст
Ответ на Re: adding "order by" to a "group by" query  (Louis-David Mitterrand <vindex+lists-pgsql-sql@apartia.org>)
Ответы Re: adding "order by" to a "group by" query  (Andreas Kretschmer <akretschmer@spamfence.net>)
Список pgsql-sql
On Sat, Dec 6, 2008 at 10:31 AM, Louis-David Mitterrand
<vindex+lists-pgsql-sql@apartia.org> wrote:
> On Sat, Dec 06, 2008 at 06:26:06PM +0100, Andreas Kretschmer wrote:
>> Louis-David Mitterrand <vindex+lists-pgsql-sql@apartia.org> schrieb:
>> >
>> > But if I append this
>> >
>> >      order by pt.type_fr = 'comédien';
>> >
>> > I get this error:
>> >
>> >     ERROR:  column "pt.type_fr" must appear in the GROUP BY clause or be used in an aggregate function
>> >
>> > It seems I am using pt.type_fr in an aggregate function (array_accum()),
>> > yet I get the error.
>> >
>> > Is there a way to to have a certain pt.type_fr bubble up (or down) in my
>> > search?
>>
>> You can use a subquery like my example:
>>
>> test=*# select i, comma(t) from (select distinct i,t from foo) bar group by i;
>>  i |  comma
>> ---+---------
>>  1 | a, b, c
>> (1 row)
>>
>> Time: 0.554 ms
>> test=*# select i, comma(t) from (select distinct i,t from foo order by t desc) bar group by i;
>
> Thanks Andreas, that would be good solution.
>
> (still curious about the "must be used in an aggregate function" error
> though... because I do use it in an aggregate)

You can order by the same thing you selected:

select sum(i) from ... group by j order by sum(i)
OR
select sum(i) from ... group by j order by 1  --  1 stands for the
first select list item...


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

Предыдущее
От: Louis-David Mitterrand
Дата:
Сообщение: Re: adding "order by" to a "group by" query
Следующее
От: Andreas Kretschmer
Дата:
Сообщение: Re: adding "order by" to a "group by" query