Uma forma legal seria
SELECT DISTINCT ON (tipo) r1.*
FROM registros r1
ORDER BY tipo, data desc
Em 17/06/2015 23:07, "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?
>
> Desde já agradeço
>
> Atenciosamente,
> Luciano
>
>
>
>
> _______________________________________________
> pgbr-geral mailing list
> [email protected]
> https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
>
>
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

Responder a