Problemas con datos tipo numeric (Especificado)

From: Armando <armandombi(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Problemas con datos tipo numeric (Especificado)
Date: 2009-04-16 16:13:33
Message-ID: dd087d110904160913j35d0b5dk8916caa8776e86e8@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Buenos dias, un saludo para toda la comunidad.

Gracias por la pronta respuesta la verdad es que ayer escribi un poco
apresurado y no me di cuenta de la falta de detalle asi que tratare de ser
mas especifico en mi problema.

El lenguaje en el que estoy ptrogramando es C.
Le consulta que realizo es sobre una tabla empleado que contiene (#dep
integer, profesion varchar, salario integer) como numero de departamento,
profesion y salario de los empleados de una empresa cualquiera, es
simplemente una tabla para pruebas. Sobre esta tabla realizo la consulta
SELECT #dep, avg(salario) FROM empleado GROUP BY #dep HAVING avg(salario) >
3000 por ejemplo esta podria ser una de las consultas.

Mi problema se encuentra en que necesito realizar unos calculos sobre las
tuplas luego que han sido procesadas por la funcion AVG a nivel del Executor
de Postgres es decir si en la tabla empleado tengo 20 datos de empleados
correspondientes a 5 departamentos, el resultado seran 5 tuplas
correspondientes a los 5 departamentos, cada uno con el AVG del salario de
la misma y la informacion de esas 5 tuplas es la que necesito manipular,
cosa que no he podido hacer puesto que los datos en las tuplas a nivel del
Executor se almacenan en slots que contienen la informacion en tipos de
datos llamados DATUM y para extraer la informacion de las mismas debo
utilizar una funcion como DatumGetInt16, DatumGetFloat4, DatumGetFloat8, etc
dependiendo del tipo de datos contenido en el slot de la tupla.

Al realizar una impresion del slot por pantalla postgres me indica que la
informacion contenida en el mismo despues del calculo del AVG es de tipo
1700, lo cual segun la informacion contenida en el pg_type.h me indica que
seria de tipo numeric, pero hasta ahora no he encontrado la manera de
extraer la informacion de manera correcta de la tupla para poder trabajar
con ella ya que intente definir una variable tipo numeric y asignarle a la
misma el valor de la tupla empleando la funcion
DatumGetNumeric(slot_getattr()) pero no he podido trabajar con ello, que es
por lo que ayer preguntaba si alguien conoce alguna manera para extraer
dicho tipo de datos de un slot o como convertirlos a un formato mas facil de
utilizar como seria float.

Gracias de antemano.. Atte Armando B.

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Gustavo Rosso 2009-04-16 16:45:51 trigger
Previous Message Javier Chávez B. 2009-04-16 15:09:43 [OT] Ayuda Mondrian