[英]Extract all transaction that contains specific item/items
我想使用 SQL 從 Redshift 中提取包含某些項目的交易。 我有兩張表(一張用於物品,一張用於與客戶 ID 進行交易)
項目表 | 項目 | | ---- | |蘋果| |鉛筆| |紙|
客戶ID | 交易編號 | 物品 |
---|---|---|
1個 | 一種 | 蘋果 |
1個 | 一種 | 鉛筆 |
2個 | b | 蘋果 |
3個 | c | 紙 |
3個 | c | 蘋果 |
3個 | 電子 | 鉛筆 |
4個 | F | 蘋果 |
5個 | G | 蘋果 |
5個 | G | 紙 |
H | 蘋果 | |
H | 紙 | |
一世 | 鉛筆 | |
j | 紙 |
如何提取所有包含Apple的交易?
我期待得到這個結果
客戶ID | 交易編號 | 物品 |
---|---|---|
1個 | 一種 | 蘋果 |
1個 | 一種 | 鉛筆 |
2個 | b | 蘋果 |
3個 | c | 紙 |
3個 | c | 蘋果 |
4個 | F | 蘋果 |
5個 | G | 蘋果 |
5個 | G | 紙 |
H | 蘋果 | |
H | 紙 |
我們可以嘗試在這里使用COUNT()
作為解析 function 來統計每組交易中蘋果商品出現的次數。
WITH cte AS (
SELECT *, COUNT(CASE WHEN Item = 'Apple' THEN 1 END) OVER
(PARTITION BY TransactionId) cnt
FROM yourTable
)
SELECT CustomerId, TransactionId, Item
FROM cte
WHERE cnt > 0
ORDER BY TransactionId, Item;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.