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

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 (view raw or flat)
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

pgsql-es-ayuda by date

Next:From: Felipe HernándezDate: 2010-07-19 18:33:01
Subject: Re: Ayuda con group by
Previous:From: Alvaro HerreraDate: 2010-07-19 18:21:38
Subject: Re: Ayuda con group by

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