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
