【问题标题】:Linking two tables based on timestamp interval根据时间戳间隔链接两个表
【发布时间】:2020-04-03 06:58:04
【问题描述】:

我正在尝试加入如下所示的两个表:

答:

ID   |          Time        |   Mode
B121   2017-10-19 11:00:00     Processed
C232   2017-10-19 12:00:00     Cancelled
B121   2017-10-19 15:00:00     Cancelled
C455   2017-10-19 18:00:00     Processed
N776   2017-10-19 11:00:00     Processed

乙:

ID   |          Time        
B121   2017-10-19 11:43:32    
C232   2017-10-19 12:00:00    
B121   2017-10-19 15:33:55    
C455   2017-10-19 18:31:33     
N776   2017-10-19 11:08:00     

我想将表 A 中的时间和模式列添加到表 B ID 和时间列。

但表 A 中的时间是基于每小时的间隔,而表 B 中的时间是准确的时间。

我该怎么做?谢谢!

【问题讨论】:

  • 您使用的是哪个 DBMS? MySQL、Oracle 等,?

标签: sql data-science presto


【解决方案1】:

使用date_trunc() 尝试以下逻辑以实现您想要的输出。通过在date_trunc() 函数中使用“小时”作为参数,这会将日期时间转换为一个值,直到该值的小时。因此,condition 只会检查 Hour 值是否相同。

SELECT B.ID, B.Time, A.Time, A.Mode 
FROM B
INNER JOIN A
    ON B.ID = A.ID
    AND date_trunc(hour, B.Time) =  date_trunc(hour, A.Time)

【讨论】:

    猜你喜欢
    • 2018-10-06
    • 1970-01-01
    • 2015-03-07
    • 2014-07-12
    • 2019-08-12
    • 2018-07-08
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多