Em 17 de junho de 2015 23:22, Osvaldo Kussama <[email protected]>
escreveu:

> Em 17/06/15, Luciano Bierhals<[email protected]> escreveu:
> > Pessoal,
> >
> > Assumindo meus limitados conhecimentos, tenho uma dúvida e gostaria de um
> > auxílio do grupo.
> >
> > Vamos a dúvida:
> >
> > CREATE TABLE "registros"
> > (
> >     "ID" INTEGER NOT NULL,
> >     "tipo" INTEGER NOT NULL,
> >     "data" DATE NOT NULL,
> >     "capacidade" SMALLINT NOT NULL
> > -- outras diversas colunas que não fazem diferença para o entendimento do
> > problema
> > );
> >
> > O campo ID é a PK.
> >
> > Para fazer um select que retorne todos os dados do registro, mas apenas o
> > de maior data, atualmente faço isso:
> >
> > Select r1.*
> > from registros r1
> > join (select max(data) as data, tipo
> >           from registro
> >          group by tipo) r2 on r1.tipo = r2.tipo and r1.data = r2.data
> >
> >
> > Pergunto: Existe alguma forma melhor (mais otimizada ou de melhor
> escrita)
> > para fazer essa consulta? Ou esta é a única forma?
> >
>
>
> Me parece mais simples:
>
> SELECT * FROM registros WHERE data = (SELECT max(data) FROM registros);
>
> Osvaldo
>



Mas nesse caso Osvaldo, o resultado é outro. Note que no meu SQL irá
retornar a maior data de cada tipo. No seu, retornará apenas a maior data
da tabela. Os resultados são diferentes.
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a