2013/5/2 Matheus de Oliveira <[email protected]>
>
>> *Segundo resultado esperado:*
>> *dia | datahora | valor_minimo*
>> 2013-01-01 | 2013-01-01 00:20:00 | 1
>> 2013-01-02 | 2013-01-02 00:30:00 | 2
>> 2013-01-02 | 2013-01-02 00:50:00 | 2
>>
>> *OBS: *Observe que às 2013-01-02 00:30:00 e 2013-01-02 00:50:00 o valor
>> se repete, neste caso, exibir ambos ordenados pela DATAHORA.
>>
>> Alguma sugestão de como fazer isso direto no Postgres?
>> Considerem que so tenho em maos o PSQL em um terminal Linux.
>>
>>
>>
> Podemos ainda usar a WINDOW FUNCTION e injetar numa sub-consulta:
>
> SELECT dia, datahora, valor_minimo FROM (
> SELECT DISTINCT ON(datahora)
> datahora::date AS dia,
> datahora,
> first_value(valor) OVER(PARTITION BY date_trunc('day', datahora)
> ORDER BY valor, datahora) AS valor_minimo,
> valor
> FROM dados
> ) AS a
> WHERE a.valor = a.valor_minimo;
>
Desculpe, cometi um erro, não precisa do DISTINCT ON nessa (na anterior
precisava):
SELECT dia, datahora, valor_minimo FROM (
SELECT
datahora::date AS dia,
datahora,
first_value(valor) OVER(PARTITION BY date_trunc('day', datahora)
ORDER BY valor, datahora) AS valor_minimo,
valor
FROM dados
) AS a
WHERE a.valor = a.valor_minimo;
At.
--
Matheus de Oliveira
Analista de Banco de Dados
Dextra Sistemas - MPS.Br nível F!
www.dextra.com.br/postgres
_______________________________________________
pgbr-geral mailing list
[email protected]
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral