在特定事件之前对事件进行计数

问题描述 投票:1回答:1

比方说,我有一个带有以下各列的表:

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需要两次展示才能创建广告。我不确定我是否可以使用

date

来区分事件(但逻辑上所有这些事件应该在不同的时刻发生)。但是,您可以看到印象在ad_idspend中具有NULL,而create_id在spend中具有数字。这不起作用:

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

假设我有一个包含以下各列的表格:日期|事件user_id | unit_id | cost | ad_id |花03-15 |印象| 2353 | 3436 | 0.15 | NULL | NULL 03-15 |印象| ...

mysql sql join left-join self-join
1个回答
0
投票
问题是用于检查您必须使用的NULL还是NULL。另外,您摆弄的数据也不正确。小提琴中没有1234的印象。
© www.soinside.com 2019 - 2024. All rights reserved.