Prøv denne:
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;
Den bruger DISTINCT ON for kun at beholde den første række for hver kombination af hive og dag. For at sikre, at den første række, vi beholder, også er den seneste, sorterer vi desuden i omvendt kronologisk rækkefølge.