> 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 >>
Em 17/06/2015 23:48, "Dadilton Melo" <[email protected]> escreveu: > > Uma forma legal seria > SELECT DISTINCT ON (tipo) r1.* > FROM registros r1 > ORDER BY tipo, data desc > Essa é uma possibilidade sim. No entanto observei em um teste que o custo de execução aumenta. Estou certo?
_______________________________________________ pgbr-geral mailing list [email protected] https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
