以下は、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
onとを比較TestingTable2
する必要があります。そして、から比較した後、すべての(基本的にはカウント)欠落エントリと不一致エントリを見つける必要があります。これのためにSQLフィドルを作成しました-TestingTable1
BUYER_ID
USER_ID
TestingTable2
TestingTable1
http://sqlfiddle.com/#!3/d87b2/1
私のクエリを SQL Fiddle で実行すると、次のような出力が得られます-
BUYER_ID ERROR
1345653 5
からの最後のthree
行TestingTable1
が で欠落しており、 onとからの比較後にTestingTable2
残りが不一致であるため、これは正しいです。two
TestingTable1
BUYER_ID
USER_ID
今、複雑なことが始まります。
問題文-
現在の出力では、エラー カウントが になってい5
ます。したがって、両方のテーブルの最初の行が と である場合、ITEM_ID
とPRODUCT_ID
は同じですがCREATED_TIME
、 とLAST_TIME
は同じではなく、これら 2 つの時間の差は のみ1 minute
です。現在、私はそれを不一致として報告していますが、必要なのは、それらの違いが 以内15 minutes range
にある場合、エラーとして報告したくないということです。したがって、現在のクエリにこの機能を実装した後、最初の行の差が 15 分の範囲内であるため、エラー カウントは 4 になります。
では、現在のクエリにこの機能を実装するにはどうすればよいでしょうか? それが私の質問です。
PS-私はHiveを使用しており、HiveはSQLのような構文をサポートしています。したがって、現在のクエリではどのような変更でも機能すると思います。