找出时间范围内的其他表中是否存在值

时间:2012-12-07 15:05:38

标签: sql oracle

我正在尝试评估用户的操作是否与另一个操作相关。这两个操作都标有时间戳。

我想评估的是用户是否在一个表中有条目,例如A(两个表对于单个用户具有相同的ID)在B中进入的时间与之前5分钟之间的另一个表A中有一个条目。我设法为所有值提取时间

SELECT 
  TO_CHAR(playdatetime - 5/(24*60),'YYYY-MM-DD HH24:MI:SS') five_min_future, 
  TO_CHAR(playdatetime,'YYYY-MM-DD HH24:MI:SS') jetzt, 
  TO_CHAR(SEARCHDATE,'YYYY-MM-DD HH24:MI:SS') ses_time

我试着做这样的事情:

CASE 
  WHEN TO_CHAR(SEARCHDATE,'YYYY-MM-DD HH24:MI:SS') 
          BETWEEN TO_CHAR(playdatetime - 1/(24*60),'YYYY-MM-DD HH24:MI:SS') 
       AND 
       TO_CHAR(playdatetime,'YYYY-MM-DD HH24:MI:SS') 
  THEN 1 
  ELSE 0 
END timediff

但是我怎么能只检查一个用户而不只是评估手头的行?

1 个答案:

答案 0 :(得分:1)

以下查询显示ab中存在的记录,其中b中的记录最早发生在a之前的5分钟:

select a.user_id,
       a.event_dt,
       b.event_dt
from   a
join   b
on     b.user_id  = a.user_id
and    b.event_dt between (a.event_dt - (5 / (60 * 24))) and a.event_dt;