假设,我有一个包含以下列的表格:
date | event | user_id | unit_id |cost | ad_id | spend
03-15 | impression | 2353 | 3436 | 0.15 | NULL | NULL
03-15 | impression | 2353 | 3436 | 0.12 | NULL | NULL
03-15 | impression | 1234 | 5678 | 0.10 | NULL | NULL
03-15 | click | 1234 | 5678 | NULL | NULL | NULL
03-15 | create_ad | 1234 | 5678 | NULL | 6789 | 10
我想计算在用户创建 ID 之前平均需要多少次展示。在此特定场景中,用户 1234 需要一次印象来创建广告。
我不确定我能否以某种方式使用日期来区分事件(但从逻辑上讲,所有这些事件都应该在不同的时刻发生)。但是,您可以看到展示次数在ad_id和支出中具有 NULL,而 create_id 在支出中确实有一个数字。
这个不行:
select i.user_id
, i.unit_id
, count(i.event) impressions_n
, count(c.event) as ads_n
from add4ad i
left
join add4ad c
on i.user_id = c.user_id
and i.unit_id = c.unit_id
where i.event in ('impression')
and c.spend <> NULL
group
by i.user_id
, i.unit_id
我用这些数据创建了一个SQLFiddle