Impala

檢索僅包含特定產品 IDS 的訂單

  • March 11, 2019

我正在嘗試檢索僅包含至少 5 個產品 IDS 的事務 IDS 列表,籃子可能有更多產品 IDS,但它也必須包含這 5 個。

我的桌子看起來像這樣:

| transaction_id | trans_date | product_id | store_id |

該表都是product_id行級別的詳細資訊,沒有任何內容被匯總。

select * from Transactions
where trans_date in ('2019-03-07','2019-03-06','2019-03-08','2019-03-09','2019-03-10')
and product_id in ('000000000021003503','000000000060280873','000000000060281480','000000000060281642','000000000020059281')

這是恢復包含這些 id 的所有事務,但我需要將其匯總到事務級別,因此如果 transaction_id 包含這些 id(至少)那麼它包含。

希望這是有道理的

如果 Impala 支持GROUP BY,COUNTHAVING,那麼您可以使用以下內容。

這裡我們選擇匹配日期和產品的記錄,然後我們計算每天每筆交易我們實際找到了多少product_ids,我們只取那些我們找到所有 5 product_ids 的結果。

SELECT transaction_id, trans_date, COUNT(product_id) as counter
FROM   Transactions
WHERE  trans_date IN ('2019-03-07','2019-03-06','2019-03-08','2019-03-09','2019-03-10')
AND    product_id IN ('000000000021003503', '000000000060280873', '000000000060281480', '000000000060281642', '000000000020059281')
GROUP BY transaction_id, trans_date
HAVING count(product_id) = 5

如果允許單個事務跨越多個日期,那麼您可以省略trans_dateandSELECT部分GROUP BY

引用自:https://dba.stackexchange.com/questions/231815