sql - 加入两个表后立即查询一半的结果
问题描述
以下查询仅对内部查询(post_engagement、网站购买)产生了正确的结果,而所有其他数字都错误地增加了许多倍。有任何想法吗?谢谢。
两个表的架构:
收藏广告(id、campaign_id、campaign_name、目标、展示次数、支出)
操作(id、ads_id、action_type、值)
SELECT
f.campaign_id,
f.campaign_name,
f.objective,
SUM(f.impressions) AS Impressions,
SUM(f.spend) AS Spend,
SUM(a.post_engagement) AS "Post Engagement",
SUM(a.website_purchases) AS "Website Purchases"
FROM
favorite_ads f
LEFT JOIN (
SELECT
ads_id,
CASE WHEN action_type = 'post_engagement' THEN SUM(value) END AS
post_engagement,
CASE WHEN action_type = 'offsite_conversion.fb_pixel_purchase' THEN SUM(value) END AS website_purchases
FROM Actions a
GROUP BY ads_id, action_type
) a ON f.id = a.ads_id
WHERE date_trunc('month',f.date_start) = '2018-04-01 00:00:00' AND
date_trunc('month',f.date_stop) = '2018-04-01 00:00:00' --only get campaigns
that ran in April, 2018
GROUP BY f.campaign_id, campaign_name, objective
Order by campaign_id
解决方案
如果不知道实际的表结构、约束、依赖关系和数据,就很难判断问题可能是什么。
您已经在评论中有一些线索,您应该首先考虑这些线索。
例如,您写道,此子查询返回正确的结果:
SELECT ads_id,
CASE
WHEN action_type = 'post_engagement'
THEN SUM(value)
END AS post_engagement,
CASE
WHEN action_type = 'offsite_conversion.fb_pixel_purchase'
THEN SUM(value)
END AS website_purchases
FROM Actions a
GROUP BY ads_id, action_type
这是否也给出了正确的结果:
SELECT ads_id,
SUM(
CASE
WHEN action_type = 'post_engagement'
THEN value
END
) AS post_engagement,
SUM(
CASE
WHEN action_type = 'offsite_conversion.fb_pixel_purchase'
THEN value
END
) AS website_purchases
FROM Actions
GROUP BY ads_id
如果是这样,然后尝试用那个替换您的子查询。
如果您仍然有问题,那么我会调查您的加入条件是否正确,看起来,对于一个活动 ( campaign_id
),您可能有多个相同的条目id
,这将使子查询结果成倍增加 -取决于favorite_ads
.
推荐阅读
- php - PHPExcel:某些行在导入时未在我的 .xls 文件中导出,但在我回显输出时显示?
- c# - 如何找出哪个Windows进程正在使用文件?
- javascript - 如何确定同一数组中是否存在重复值?
- php - 如何在 laravel 中为我的购物项目创建 cms 用户类型和常规配置文件
- java - 在 BaseFragment 中使用 dagger2 实例化视图模型
- javascript - 为什么 @ViewChild(NgbDropdown) 在我的组件中不起作用?
- amazon-web-services - 具有 MariaDB 成本的 Amazon RDS
- google-cloud-platform - 有什么方法可以知道从哪个综合索引中获取数据?
- python - 使用 python 在此处的 Map Image API 中的静态图像中绘制线条/路径
- python - 选择 3 个连续值匹配条件的行 - Python、Pandas