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

如何通过自连接按广告类型统计购买总量?当前自连接无返回值

问题原因及解决方案

你的SQL用了内连接(JOIN),这要求每个campaign_id必须同时满足以下所有条件才会被返回:

  • 存在ad_product_type = 'sponsored_products'的数据(WHERE条件)
  • 存在ad_product_type = 'sponsored_display'的数据(b表连接条件)
  • 存在ad_product_type = 'sponsored_brands'的数据(c表连接条件)
  • 存在ad_product_type IS NULL的数据(d表连接条件)

只要某个广告活动缺任意一种类型的数据,就会被内连接过滤掉,所以返回空结果。

更合适的做法是用条件聚合,不需要自连接,直接按活动分组后,用CASE WHEN统计各类型的购买量总和:

SELECT
  campaign,
  campaign_id,
  SUM(CASE WHEN ad_product_type = 'sponsored_products' THEN purchases ELSE 0 END) AS sponsored_products,
  SUM(CASE WHEN ad_product_type = 'sponsored_display' THEN purchases ELSE 0 END) AS sponsored_display,
  SUM(CASE WHEN ad_product_type = 'sponsored_brands' THEN purchases ELSE 0 END) AS sponsored_brands,
  SUM(CASE WHEN ad_product_type IS NULL THEN purchases ELSE 0 END) AS dsp
FROM 
  amazon_attributed_events_by_traffic_time
GROUP BY 
  campaign, campaign_id

代码说明

  • 直接对原表分组,用CASE WHEN匹配对应的广告类型,累加该类型的purchases,不匹配的用0填充
  • 即使某个活动缺少某类广告数据,对应的列会显示0,不会过滤掉整条记录
  • 分组只需要campaign和campaign_id,不需要包含广告类型,因为我们已经按类型做了条件聚合

内容的提问来源于stack exchange,提问作者Patricia Mari Maclang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:39:54