これを試してください:
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;
DISTINCT ON
を使用します hive
の組み合わせごとに最初の行のみを保持します と日。保持する最初の行も最新の行になるように、さらに新しい順に並べ替えます。