Re: Comportamiento array_agg

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Jorge Tornero <jorge(dot)tornero(at)cd(dot)ieo(dot)es>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Comportamiento array_agg
Date: 2010-11-11 12:31:46
Message-ID: 1289478396-sup-9960@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Excerpts from Jorge Tornero's message of jue nov 11 04:38:09 -0300 2010:

> Pero el problemón surge porque la nueva columna proveniente del
> array_arg sale desordenada en este caso, mientras que sin el cruce con
> la tabla de especies salía perfectamente ordenada.
>
> ¿Cómo se podría cambiar este comportamiento?

En realidad no puedes confiar en que salga ordenado el arreglo en
ningundo de los dos casos. Puede ser que salga ordenado por casualidad
en este caso, pero no está garantizado. En 9.0 puedes especificar una
cláusula ORDER BY despues de los argumentos de una función de
agregación:

select cod_especie as "Especie",
array_to_string(array_agg(pesca ORDER BY pesca),',' ) as "Lances en los que aparece"
from fauna
group by cod_especie
order by cod_especie;

Esto se explica en
http://www.postgresql.org/docs/9.0/static/sql-expressions.html#SYNTAX-AGGREGATES

Supongo que deberías poder poner el ORDER BY también cuando agregas el
JOIN; pégale una vuelta.

En versiones anteriores no puedes usar ese ORDER BY; compara
http://www.postgresql.org/docs/8.4/static/sql-expressions.html#SYNTAX-AGGREGATES

--
Álvaro Herrera <alvherre(at)commandprompt(dot)com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Virginia 2010-11-11 15:58:22 Consulta
Previous Message Emanuel Calvo Franco 2010-11-11 11:39:15 Re: Uso de memoria en Postgres 8.3