select newest update record among similar record
I'm not super familiar with Postgres, but based on some Internet searches, it seems that your version of Postgres supports 'window functions'.  It also seems to support 'common table expressions'.  If those statements are true, you should be able to wrap you main query into a common table expression and utilize the ROW_NUMBER window function to assign a row number to each 'grouping' (partition by person) and order by seg.updated desc.  Something like the following

;
With BaseData as
(
SELECT seg.summ
    ,su.channel
    ,seg.block_id
    ,seg.person
    ,seg.updated_at AS segupdate
    ,ROW_NUMBER() OVER(PARTITION BY seg.person ORDER BY seg.updated_at desc) as rn
FROM segments seg
LEFT JOIN summaries su
    ON seg.summ = su.id
WHERE su.created_at BETWEEN '2018-06-06'
        AND '2018-07-13'
ORDER BY summ
    ,block_id
    ,seg.updated_at DESC;
)
SELECT * FROM BaseData where rn = 1