2012-07-23 42 views
-1

以下的不匹配是在表1計數上的時間差

BUYER_ID | ITEM_ID   | CREATED_TIME 
-----------+-------------------+------------------------ 
1345653  110909316904   2012-07-09 21:29:06 
1345653  151851771618   2012-07-09 19:57:33 
1345653  221065796761   2012-07-09 19:31:48 
1345653  400307563710   2012-07-09 18:57:33 
1345653  310411560125   2012-07-09 16:09:49 
1345653  120945302103   2012-07-09 13:40:23 
1345653  261060982989   2012-07-09 09:02:21 

下面的數據是在表2

USER_ID | PRODUCT_ID   | LAST_TIME 
-----------+-------------------+---------------------- 
1345653  110909316904   2012-07-09 21:30:06 
1345653  151851771618   2012-07-09 19:57:33 
1345653  221065796761   2012-07-09 19:31:48 
1345653  400307563710   2012-07-09 18:57:33 

問題陳述的數據: -

我需要比較Table2Table1BUYER_IDUSER_ID。我需要找到匹配的計數,如果CREATED_TIMELAST_TIME之間的差大於15 minutes

所以,如果你看一下上面的例子,看到第一排兩個表ITEM_IDPRODUCT_ID是相同的,但CREATED_TIMELAST_TIME是不一樣,而這兩次之間的差距只有1分鐘。所以如果差異大於15分鐘,那麼我想將它們顯示爲一個錯誤。因此,預期產量將以上病例

BUYER_ID ERROR 
1345653  1 
+0

只是爲了保持完整性,其數據庫您使用的? SQL Server?甲骨文? MySQL的? Postgres的?還有別的嗎? – 2012-07-23 22:16:47

+1

我在蜂房,蜂巢時,支持SQL的語法,但在這裏補充一點,我覺得作爲蜂房僅支持'平等JOINS',將是有用的'<= 15'將無法工作在JOIN條件,但在where子句我們可以添加這個'<= 15'。我知道如何處理Hive中的日期函數,我只是在尋找解決方案,以便我可以修改它以在Hive環境中工作。我認爲SQL Server語法在這裏可以正常工作。 – ferhan 2012-07-23 22:19:56

+0

[你已經張貼了這個問題(http://stackoverflow.com/questions/11619008/rewrite-sql-query-to-accept-date-difference-condition-in-where-clause/)。請不要轉發。 – 2012-07-23 22:43:15

回答

1

首先,找到所有有符合買家:

select * 
from table1 t1 join 
    table2 t2 
    on t1.buyer_id = t2.user_id and 
     datediff(min, t1.created_time, t2.last_time) between -15 and 15 

利用這一點,現在發現的情況下,有沒有匹配:

with matches as (
    select * 
    from table1 t1 join 
      table2 t2 
      on t1.buyer_id = t2.user_id and 
      datediff(min, t1.created_time, t2.last_time) between -15 and 15 
    ) 
select * 
from table1 t1 left outer join 
    matches m 
    on t1.buyer_id = m.user_id and 
     t1.product_id = m.product_id and 
     t1.created_time = m.created_time 
where m.buyer_id is null 
+0

你可以提供一些sql小提琴例子,我可以看到它是否在工作嗎? – ferhan 2012-07-23 22:22:48