Versuchen Sie Folgendes:
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;
Es verwendet DISTINCT ON um nur die erste Zeile für jede Kombination von hive zu behalten und Tag. Um sicherzustellen, dass die erste Zeile, die wir behalten, auch die neueste ist, sortieren wir zusätzlich in umgekehrter chronologischer Reihenfolge.