Re: Ayuda con group by

From: Felipe Hernández <pipelx(at)gmail(dot)com>
To: pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: Ayuda con group by
Date: 2010-07-19 18:33:01
Message-ID: AANLkTilcYS_hdu1RDsDvXkRv7yxlwBaY289QNeDTuOvN@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Lo que te esta diciendo el error es que estas llamando un campo que no
existe en la tabla dataloger,
en este caso el campo datset, que no lo veo por ningun lado.

select
a.datset, --- ESTE no sera datsem????

El 19 de julio de 2010 13:23, Fernando Siguenza <fsigu(at)hotmail(dot)com>escribió:

> Gracias felipe ahi si se ejecuto mucho mas rapito la consulta, quisiea ver
> si me puedes ayudar con algo, con la siguiente estructura dela tabla
>
> CREATE TABLE dataloger
> (
> datano integer NOT NULL,
> datsem integer NOT NULL,
> datnum integer NOT NULL,
> datfec date,
> dathor time without time zone,
> dattem numeric(10,2) NOT NULL,
> dathum numeric(10,2),
> datdew numeric(10,2),
> datblocod character varying(5) NOT NULL, -- Codigo de la localidad a la
> que corresponde las mediciones
> CONSTRAINT "dataloger_PK" PRIMARY KEY (datano, datsem, datnum,
> datblocod),
> CONSTRAINT "dataloger_bloque_FK" FOREIGN KEY (datblocod)
> REFERENCES bloque (blocod) MATCH SIMPLE
> ON UPDATE NO ACTION ON DELETE NO ACTION
> )
>
> lo que quiero es tener por bloque(que es la localidad donde se toma las
> temperaturas) la temperaturta maxima y minima de cada dia y a que hora fue
> esta, para eso uso la consulta que me indicaste ya acoplada al los campos
> que tengo
>
> select
> a.datset,
> blonom,
> a.datfec,
> a.dathor,
> a.dattem
> from dataloger a,
> (select datfec,max(dattem) as dattem
> from dataloger
> group by datfec) as b
> inner join bloque on blocod=a.datblocod
> where a.datfec=b.datfec and
> a.dattem=b.dattem
>
> Pero tengo este error
> ERROR: referencia a la entrada de la cláusula FROM para la tabla «a» no
> válida
>
> como seria para poder obtener el nombre de la bloque o localidad en este
> caso incluido ene l resultado
>
> Saludos
>
>
>
>
> ------------------------------
> Date: Mon, 19 Jul 2010 13:10:21 -0500
>
> Subject: Re: [pgsql-es-ayuda] Ayuda con group by
> From: pipelx(at)gmail(dot)com
>
> To: fsigu(at)hotmail(dot)com
>
>
>
> El 19 de julio de 2010 12:55, Fernando Siguenza <fsigu(at)hotmail(dot)com>escribió:
>
> Muchas gracias silvio por la ayuda,pero al momento de ejecutar la consulta
> como me indicas se demora casi 4 minutos en realizar la misma,
> tengo apenas 30700 registros.
>
> alguna forma de optimzar la misma?/
>
> saludos
>
> > Date: Mon, 19 Jul 2010 13:53:29 -0300
> > Subject: Re: [pgsql-es-ayuda] Ayuda con group by
> > From: silvioq(at)gmail(dot)com
> > To: fsigu(at)hotmail(dot)com
> > CC: pgsql-es-ayuda(at)postgresql(dot)org
>
> >
> > El día 19 de julio de 2010 13:22, Fernando Siguenza
> > <fsigu(at)hotmail(dot)com> escribió:
> > > Amigos como estan queria consultarles a ver si medan una mano con una
> > > consulta que necesito.
> > > Tengo una tabla con los campos semana,fecha,hora,temperatura,humedad
> > >
> > > y necesito saber por dia cuales la temperatura y humedad maxima de cada
> dia
> > > y a que hora ocurre esto.
> > >
> > > Entonces tengo la siguiente consulta
> > >
> > > select semana,fecha,hora,max(temperatura),max(humedad)
> > > from dataloger
> > > group by semana,fecha,hora
> > >
> >
> > Tenés que hacer dos consultas, una para la humedad y otra para la
> > temperatura, ya que el horario de temperatura puede ser distinto al de
> > humedad.
> >
> >
> > select a.fecha, a.hora, a.humedad
> > from dataloger a
> > where humedad = ( select max( humedad )
> > from dataloger b
> > where a.fecha = b.fecha )
> >
> > y lo mismo para temperatura.
> >
> > Silvio
>
>
> La consulta es ineficiente, nunca hagas algo como campo = ( select ) , esto
> hace q la consulta del select interno corra por cada registro a comparar, en
> este caso seria algo como 30 mil veces por cada registro. mas bien has algo
> como esto
>
> select
> a.fecha,
> a.hora,
> a.humedad
> from
> dataloger a,
> (select
> fecha,
> max( humedad ) as humedad
> from
> dataloger
> group by
> fecha) as b
> where
> a.fecha=b.fecha and
> a.humedad=b.humedad
>
> y lo mismo para la temperatura.
>
>
>
> ------------------------------
> Get news, entertainment and everything you care about at Live.com. Check
> it out! <http://www.live.com/getstarted.aspx>
>
>
>
>
> --
> fElIpE
>
> ------------------------------
> Explore the seven wonders of the world Learn more!<http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE>
>

--
fElIpE

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Felipe Hernández 2010-07-19 18:49:37 Re: Ayuda con group by
Previous Message Fernando Siguenza 2010-07-19 18:23:58 RE: Ayuda con group by