Re: Leer un registro con un ciclo for

From: Jaime Casanova <systemguards(at)gmail(dot)com>
To: Sergio Valdes Hurtado <svh(dot)pgsql(at)gmail(dot)com>
Subject: Re: Leer un registro con un ciclo for
Date: 2005-12-09 17:10:45
Message-ID: c2d9e70e0512090910r3ee88c10kc72e0aa27598ffd5@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

CC: pgsql-es-ayuda(at)postgresql(dot)org

> El 9/12/05, Jaime Casanova<systemguards(at)gmail(dot)com> escribió:
> > On 12/9/05, Sergio Valdes Hurtado <svh(dot)pgsql(at)gmail(dot)com> wrote:
> > > Estimados, tengo la siguiente tabla:
> > >
> > > CREATE TABLE notas_alumno (
> > > id_alumno int8 NOT NULL,
> > > id_asignatura int4 NOT NULL,
> > > test1 int2,
> > > test2 int2,
> > > test3 int2,
> > > test4 int2,
> > > test5 int2,
> > > test6 int2,
> > > CONSTRAINT pk_notas_alumnos PRIMARY KEY (id_alumno, id_asignatura)
> > > )
> > >
> > > Necesito hacer una función que recorra cada registro y por cada uno de
> > > ellos tome los campos llamados test y los vaya promediando de a tres,
> > > por ejemplo: que primero tome test1, test2 y test3 y calcule un
> > > promedio. luego tome test2, test3 y test4 y calcule un promedio, y así
> > > sucesivamente.
> > > Yo había pensado hacerlo en un ciclo como el siguiente
> > > for num in 1..4 loop
> > > .
> > > .
> > > end loop;
> > >
> >
> > necesitas un promedio de las 3 columnas por cada fila? o un promedio
> > de las 3 columnas entre todo el data set? cualquiera sea el caso cual
> > es el problema en hacerlo en un select?
> >
>

On 12/9/05, Sergio Valdes Hurtado <svh(dot)pgsql(at)gmail(dot)com> wrote:
> Hola Jaime,
>
> Necesito el promedio de campo3, campo4 y campo5, luego el promedio de
> campo4, campo5 y campo6, luego campo5, campo6 y campo7 y así
> sucesivamente por cada fila.
>
> Si bien es cierto yo puse que mi tabla llega hasta el campo test6, la
> realidad es que llega hasta test24. Es decir test1, test2, ....,
> test24.
> como comprenderás tengo que hacer 22 promedios por cada fila y eso es
> un poco tedioso. Por eso pensé en un ciclo que lo hiciera y que se
> fuera moviendo a través de los campos.
>
> gracias por tu ayuda
>
>
>

CREATE VIEW promedios AS
SELECT (test1 + test2 + test3) / 3 as promedio1,
(test2 + test3 + test4) / 3 as promedio2,
... todos los que necesites
FROM notas_alumnos

BTW, esa tabla deberia romperse para tener una tabla
alumno_asignatura, y otra alumno_notas, posiblemente con una tabla
adicional dando mas informacion sobre el motivo de la nota... en todo
caso el tener ese diseño te obliga a hacer una vista como la que te
indico

--
Atentamente,
Jaime Casanova
(DBA: DataBase Aniquilator ;)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Enrique Javier Ros Gadea 2005-12-09 17:23:33 Estimados
Previous Message Sergio Valdes Hurtado 2005-12-09 17:00:31 Re: Leer un registro con un ciclo for