> 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

Responder a