You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Redshift中用SQL提取包含Apple的全部交易记录

提取包含特定商品的Redshift交易记录SQL方案

要提取所有包含Apple的交易记录(即只要某交易ID下存在Apple,该交易的所有商品条目都需保留),可以用以下两种高效的SQL实现方式:

方法一:子查询关联筛选

先筛选出所有包含Apple的交易ID,再关联原交易表获取完整交易记录:

SELECT t.客户ID, t.交易ID, t.商品
FROM 交易表 t
INNER JOIN (
    SELECT DISTINCT 交易ID
    FROM 交易表
    WHERE 商品 = 'Apple'
) apple_trans ON t.交易ID = apple_trans.交易ID
ORDER BY t.交易ID, t.商品;

说明:子查询通过DISTINCT去重交易ID,避免重复关联,提升查询效率,最终返回所有目标交易下的全部商品行。

方法二:窗口函数标记筛选

利用窗口函数按交易ID分组,标记包含Apple的交易,再过滤出目标记录:

SELECT 客户ID, 交易ID, 商品
FROM (
    SELECT 
        客户ID, 
        交易ID, 
        商品,
        COUNT(CASE WHEN 商品 = 'Apple' THEN 1 END) OVER(PARTITION BY 交易ID) AS has_apple
    FROM 交易表
) transaction_with_flag
WHERE has_apple > 0
ORDER BY 交易ID, 商品;

说明:窗口函数COUNT(...) OVER(PARTITION BY 交易ID)统计每个交易中Apple的出现次数,次数大于0则说明该交易包含Apple,进而保留整个交易的所有条目,无需额外关联操作。

两种方法均能得到你预期的结果,可根据数据表的规模选择合适的方案。

内容的提问来源于stack exchange,提问作者Ameer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 17:25:14