Получить последнюю запись за данную секунду Postgres - PullRequest
1 голос
/ 13 июля 2020

У меня есть данные с точностью до миллисекунды. Я хочу фильтровать только самую последнюю метку времени в пределах заданной секунды. Ie. записи (2020-07-13 5: 05.38.009, event1), (2020-07-13 5: 05.38.012, event2) должны получать только последнее.

Я пробовал следующее:

SELECT 
    timestamp as time, event as value, event_type as metric 
FROM 
    table
GROUP BY 
    date_trunc('second', time)

Но затем меня также просят сгруппировать по событию, и я вижу все данные (как если бы группа по не была предоставлена)

1 Ответ

1 голос
/ 13 июля 2020

В Postgres вы можете использовать distinct on:

select distinct on (date_trunc('second', time)) t.*
from t
order by time desc;
...