【发布时间】:2022-08-18 15:50:36
【问题描述】:
我在使用这两个表时遇到了问题:
ad_spend
| date | campaign | spend |
| ------- | ------ | ----- |
| 1/1/2021| C | 500 |
| 1/1/2021| D | 500 |
| 1/1/2021| C | 500 |
| 1/1/2021| D | 500 |
| 1/2/2021| C | 500 |
| 1/2/2021| D | 500 |
| 1/2/2021| C | 500 |
| 1/3/2021| D | 500 |
...
signups_from_ad
| date | campaign | customer_id |
| ------- | ------ | ----------- |
| 1/1/2021| C | 1 |
| 1/1/2021| C | 2 |
| 1/1/2021| D | 3 |
| 1/1/2021| C | 4 |
| 1/2/2021| C | 5 |
| 1/2/2021| D | 6 |
| 1/2/2021| D | 7 |
| 1/3/2021| D | 8 |
...
我需要从这两个表中创建一个表,该表将按日期和活动返回支出、注册数量以及每次注册的成本,我不知道如何继续。我尝试进行连接,但它们似乎不是正确的解决方案。我知道可以使用联合/联合全部和交叉连接来组合两个没有公共列的表,但我觉得这在这里也没有帮助。提前感谢您的任何建议。
编辑:按照 cmets 中的建议,我重新尝试了这个内部连接:
Select distinct s.date, s.campaign, count(s.customer_id), sum(a.spend), sum(a.spend)/count(s.customer_id) as \'cost\'
from signups_from_dig as s
inner join ad_spend as a
on a.date=s.date
group by s.date, s.campaign;
该代码似乎重复计算条目,但我在 count 前面使用了 \"distinct\" 似乎部分修复了它。但是,对 sum 使用 distinct 似乎不起作用(它只计算一次),我不确定如何解决这个问题。
-
为每个表创建一个子查询,返回日期和活动以及表中所需的统计信息,按日期和活动分组。加入两个子查询。如果每个日期/活动都会有支出并且可能有注册,请左加入注册子查询
-
在您的示例数据中,所有行在
ad_spend表中都包含相同的spend值。这是绝对的(该表的值将永远相同)?如果不是,并且该表可能在此列中包含不同的值,则该任务在当前数据上是无法解决的。 -
您需要重新构建您的表格设计
-
尝试上面的查询,因为我添加了不同的,所以没有重复的结果
-
为什么你说唯一的共同字段似乎是日期,当两个表中都有一个名为活动的列,你甚至说你想要结果“按日期和活动”?