Hãy thử cái này:
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;
Nó sử dụng DISTINCT ON
để chỉ giữ hàng đầu tiên cho mỗi tổ hợp hive
và ngày. Để đảm bảo rằng hàng đầu tiên mà chúng tôi giữ cũng là hàng mới nhất, chúng tôi cũng sắp xếp theo thứ tự thời gian ngược lại.