我想使用SQL从Redshift中提取包含某些项目的事务。我有两个表(一个用于项目,另一个用于具有客户id的事务)
项目表|项目|| ---- |苹果公司| |铅笔| |纸| |
客户id | 交易id | 商品 | 1 | 苹果 | 1
---|---|---|
铅笔 | ||
b | 苹果 | |
3 | c | 论文 |
3 | c | 苹果 |
3 | e | 铅笔 |
f | 苹果 | |
g td> | ||
g td> | ||
h | 苹果 | |
h | 论文 | |
我 | 铅笔 | |
j | 论文 |
我们可以尝试使用COUNT()
作为解析函数来计算每组交易中apple项出现的次数。
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;