20 分前から 2 時間前までの間に放棄日がある人をテーブルから引き出そうとしています。これは適切な時間を確保しているように見えますが、すべて 4 時間経過しています。
SELECT *
FROM $A$
WHERE ABANDONDATE >= SYSDATE - INTERVAL '2' HOUR
AND ABANDONDATE < SYSDATE - INTERVAL '20' MINUTE
AND EMAIL_ADDRESS_ NOT IN(SELECT EMAIL_ADDRESS_ FROM $B$ WHERE ORDERDATE >= sysdate - 4)
また、すべてのユーザーのすべてのレコードを取得し、メール アドレスごとに放棄された最新の製品 (放棄日が最も長いもの) のみを取得します。私はこれを理解できないようです。