Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

287
Vistas
array_agg con trabajos distintos en postgres 9.4 pero no en postgres 9.6

Tengo una consulta que usa array_agg con distinto como argumento y no se acepta en postgres 9.6.

Creé esta muestra para ilustrar el problema:

 create table numbers (id integer primary key, name varchar(10)); insert into numbers values(1,'one'); insert into numbers values(2,'two');

postgres 9.4

 select array_agg(distinct(id)) from numbers; array_agg ----------- {1,2}

postgres 9.6

 ERROR: function array_agg(integer) is not unique LINE 1: select array_agg(distinct(id)) from numbers; ^ HINT: Could not choose a best candidate function. You might need to add explicit type casts.

¿Qué debo cambiar para obtener este resultado en postgres 9.6?

Gracias.

Esto es lo que obtengo comprobando las funciones:

 nspname | proname | proargtypes ------------+-----------+--------------------- pg_catalog | array_agg | [0:0]={anyarray} public | array_agg | [0:0]={anyelement} pg_catalog | array_agg | [0:0]={anynonarray

Ahora, encontré el problema gracias al comentario de pozs . Eliminé la definición pública de la función agregada y funcionó.

El problema estaba solo en la base de datos en la que estaba trabajando, ya que encontré que algunas personas decían que la muestra les funcionaba. Creé una nueva base de datos y ejecuté el ejemplo. Y luego, el único cambio allí fueron las definiciones de funciones agregadas.

over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Ahora, encontré el problema gracias al comentario de pozs. Eliminé la definición pública de la función agregada y funcionó.

El problema estaba solo en la base de datos en la que estaba trabajando, ya que encontré que algunas personas decían que la muestra les funcionaba. Creé una nueva base de datos y ejecuté el ejemplo. Y luego, el único cambio allí fueron las definiciones de funciones agregadas.

Así que dejo la función pública | array_agg | [0:0]={anyelement} y funcionó.

Muchas gracias.

over 4 years ago · Santiago Trujillo Denunciar

0

Funciona exactamente así, como lo demuestra este dbfiddle en PostgreSQL 9.6.2 en x86_64-pc-linux-gnu, compilado por gcc (Debian 4.9.2-10) 4.9.2, 64 bits .

ingrese la descripción de la imagen aquí

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda