Skip site navigation (1) Skip section navigation (2)

función para obtener registros por rangos

From: Cesar A <cesar(dot)carbonara(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: función para obtener registros por rangos
Date: 2010-05-19 14:20:44
Message-ID: AANLkTin50oNAzacYWUPc_k7a7EMfIepmK2SaiPQwDhrj@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
Saludos

Tengo una tabla que, entre otras cosas, tiene:
Cantidad de hombres, mujeres, por edad (0, 1, 2..99)

Tengo una consulta que me devuelve cantidad de hombres y mujeres por un
rango de edad, algo como:

hombres | mujeres | edad
---------+---------+------
   36145 |   34599 |    0-4

Donde la unitaria es:

hombres | mujeres | edad
---------+---------+------
    6198 |    5878 |    0
    7562 |    7248 |    1
    7513 |    7213 |    2
    7461 |    7161 |    3
    7411 |    7099 |    4
(5 filas)

Necesito tener la lista, por rangos de 5, hasta el máximo de edad existente,
lo que tengo:

CREATE OR REPLACE FUNCTION rangos_edad (anio integer)
RETURNS SETOF record
AS $$
DECLARE
l record;
i int2 := 0;
j int2 := 4;
 BEGIN
FOR l IN SELECT sum(t1.hombres),sum(t1.mujeres),(min(t1.edad)||' -
'||max(t1.edad))::text
FROM
(
SELECT SUM(dem01_005) AS hombres, SUM(dem01_006) AS mujeres, dem01_004 AS
edad
FROM dem01
WHERE dem01_002 = '$1'
GROUP BY dem01_004
HAVING dem01_004 >= i AND dem01_004 <= j
ORDER BY dem01_004
) AS t1
LOOP
RETURN NEXT l;
i := i+5;
j := j+5;
END LOOP;
END;
$$
Language 'plpgsql';


Pero no furula... al hacer una consulta, me devuelve:

 SELECT * FROM rangos_edad(2000) as (t varchar, a  int, b int, c smallint);
ERROR:  wrong record type supplied in RETURN NEXT
CONTEXT:  PL/pgSQL function "rangos_edad" line 18 at RETURN NEXT


Leí que el error se debe a que la definición de las columnas de retorno debe
ser exacta, pero no doy...

En la tabla, la edad es un smallint, cantidad de hombres y mujeres son
integer... el año que utilizo para la consulta, está como varchar(4) pues
sólo se guarda el año

Ideas?
-- 
--
Sí no eres parte de la solución... eres parte del problema.
Les Luthiers
-- 
Cesar A. Carbonara R.
C.I. Nº V.11.952.572
--
Usuario Linux 377997
www.gulmer.org.ve
Debian... todo lo que siempre has querido

Responses

pgsql-es-ayuda by date

Next:From: Jaime CasanovaDate: 2010-05-19 14:51:09
Subject: Re: [pgsql-es-ayuda] función para obtener registros?==?UTF-8?Q? por rangos
Previous:From: Ing. Yunior Mesa ReyesDate: 2010-05-19 13:51:07
Subject: Abierta inscripción para Cursos de Verano en la UCI...!!!

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group