下面是TestingTable1中的数据
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
下面是TestingTable2中的数据
USER_ID | PRODUCT_ID | LAST_TIME
-----------+-------------------+-------------------
1345653 110909316904 2012-07-09 21:30:06
1345653 152851771618 2012-07-09 19:57:33
1345653 221065796761 2012-07-09 19:31:48
1345653 400307563710 2012-07-09 18:57:33
我需要TestingTable2
比较TestingTable1
onBUYER_ID
和USER_ID
。我需要TestingTable2
在比较 from 之后找到所有(基本上是计数)丢失和不匹配的条目TestingTable1
。我为此创建了 SQL 小提琴 -
http://sqlfiddle.com/#!3/d87b2/1
如果你在 SQL Fiddle 中运行我的查询,你会得到输出——
BUYER_ID ERROR
1345653 5
这是正确的,因为从on和比较后的最后three
一行TestingTable1
缺失TestingTable2
,其余行two
不匹配。TestingTable1
BUYER_ID
USER_ID
现在复杂的事情开始了。
问题陈述-
在我当前的输出中,我得到 ERROR count as 5
。因此,如果您在两个表中看到第一行ITEM_ID
并且PRODUCT_ID
相同但不相同,CREATED_TIME
并且LAST_TIME
这两次之间的差异仅为1 minute
. 所以目前我将其报告为不匹配,但我需要的是,如果它们之间的差异在 范围内15 minutes range
,那么我不想报告为错误。因此,在我当前的查询中实现此功能后,我将错误计数为 4,因为第一行的差异在 15 分钟范围内。
那么如何在我当前的查询中实现这个功能呢?那是我的问题。
PS-我正在使用 Hive 并且 Hive 支持类似 sql 的语法。所以我认为任何修改都将在我当前的查询中起作用。