выбрать самую новую запись обновления среди похожих записей - PullRequest
0 голосов
/ 27 сентября 2018

У меня есть две таблицы сегментов и сводки.
Я хочу перечислить шоу в интервале дат и просто показать последние обновленные сегменты (жирным шрифтом), поскольку это самая свежая копия сегмента для этого человека.
Вот запрос, который я использовал, чтобы получить результат ниже:

select seg.summ, su.channel, seg.block_id, seg.person, seg.updated_at as segupdate 
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;   

enter image description here

Я хочу это:

enter image description here

Как я могу изменить свой запрос, чтобы показывать только жирные строки?удалить дубликаты старой версии?

Ответы [ 2 ]

0 голосов
/ 03 октября 2018

Вот что я сделал:

select distinct on (seg.summ, seg.block_id, seg.person) su.channel, seg.updated_at as segupdate 
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, person, seg.updated_at desc;
0 голосов
/ 27 сентября 2018

Вы можете попытаться использовать оконную функцию ROW_NUMBER, сделать номер строки order by segupdate DESC, а затем получить rn = 1 самую новую строку данных.

SELECT * FROM 
(
     SELECT *,ROW_NUMBER() OVER(PARTITION BY summ,channel,block_id,person order by segupdate DESC) rn
     FROM (
        select seg.summ, su.channel, seg.block_id, seg.person, seg.updated_at as segupdate 
         from segments seg 
         left join summaries su on seg.summ = su.id 
         where su.created_at between '2018-06-06' and '2018-07-13' 
     ) t1
) t1
where rn = 1
...