SELECT distinct
LAST_VALUE(id) OVER (PARTITION BY created_at::date ORDER BY value DESC RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) id,
LAST_VALUE(value) OVER (PARTITION BY created_at::date ORDER BY value DESC RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) value,
LAST_VALUE(created_at) OVER (PARTITION BY created_at::date ORDER BY value DESC RANGE BETWEEN UNBOUNDED PRECEDING AND UNBOUNDED FOLLOWING) created_at
FROM tbl
ORDER BY created_at;