我有两个表,其中retailer和id的组合是两者之间最常见的一个。我需要为第一个表中的所有零售商+ id组合创建一个新表,并为具有最新时间戳的第二个表中的那些零售商创建相应的数据。
第一个表将只有一个记录,每个零售商,id组合,但第二个表将有多个记录,每个零售商,id组合,基于它被抓取的时间,我需要创建一个新的表,其中包含每个组合的最新时间戳数据。
输入表1:

输入表2:

输出表:

发布于 2020-08-19 03:31:59
这基本上就是聚合和join
select *
from table1 t1 left join
(select t2.retailer, max(timestamp) as max_timestamp
from table2 t2
group by t2.retailer
) t2
on using (retailer);如果您想要整个最新的行,您可以使用以下代码的变体:
select *
from table1 t1 left join
(select ( array_agg(t2 order by timestamp desc limit 1) )[safe_ordinal(1)].*
from table2 t2
group by t2.retailer
) t2
on using (retailer);https://stackoverflow.com/questions/63475337
复制相似问题