要在30秒内加入时间戳吗?

时间:2019-11-15 01:10:23

标签: sql data-science data-analysis presto sql-timestamp

我有一个查询,尝试在其中加入时间戳,但是由于一个表中没有确切的时间戳,而且仅每30秒就有一个时间戳,我可以在这种情况下加入吗?

SELECT * FROM table loc
LEFT JOIN table dest ON loc.id = dest.id AND loc.timestamp = dest.timestamp

除了联接的第二个ON部分,如果loc.timesamp = dest.timestamp彼此之间在30秒之内,我希望它是

谢谢

2 个答案:

答案 0 :(得分:4)

考虑:

SELECT * 
FROM table loc
LEFT JOIN table dest 
    ON loc.id = dest.id 
    AND loc.timestamp 
        BETWEEN dest.timestamp - interval '30' second
        AND dest.timestamp + interval '30' second

这将起作用;您需要考虑在dest表中存在连接间隔的多个记录的风险。如果发生这种情况,那么最终将在结果集中出现重复的loc记录。根据您的数据,这可能会或可能不会发生。

答案 1 :(得分:3)

您可以将其表示为:

SELECT *
FROM table loc LEFT JOIN
     table dest
     ON loc.id = dest.id AND
        loc.timestamp >= dest.timestamp - INTERVAL '30' SECOND AND
        loc.timestamp <= dest.timestamp + INTERVAL '30' SECOND;