Wypróbuj ten:
SELECT
DISTINCT ON (hive, moment)
*, DATE_TRUNC('day', instant AT TIME ZONE 'pst') AS moment
FROM dt_weight
ORDER BY hive, moment DESC, instant DESC;
Używa DISTINCT ON
aby zachować tylko pierwszy wiersz dla każdej kombinacji hive
i dzień. Aby mieć pewność, że pierwszy zachowany wiersz jest również najnowszym, dodatkowo sortujemy w odwrotnej kolejności chronologicznej.