RE: Ayuda con group by

From: Fernando Siguenza <fsigu(at)hotmail(dot)com>
To: <pipelx(at)gmail(dot)com>, Foro Postgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: RE: Ayuda con group by
Date: 2010-07-19 18:23:58
Message-ID: SNT108-W3080758FAC1471A7D9754EA1BF0@phx.gbl
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda


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!

--
fElIpE

_________________________________________________________________
Explore the seven wonders of the world
http://search.msn.com/results.aspx?q=7+wonders+world&mkt=en-US&form=QBRE

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Felipe Hernández 2010-07-19 18:33:01 Re: Ayuda con group by
Previous Message Alvaro Herrera 2010-07-19 18:21:38 Re: Ayuda con group by