【发布时间】:2020-06-20 11:09:10
【问题描述】:
我有一个包含 [datetime, ad_id, event, platform] 列的表格,其中
ad_id - 广告的id
事件 - {'view', 'click'}
平台 - {'web'、'android'、'ios'}
我想查找在查看之前点击过的 ad_id。
我该怎么做?
【问题讨论】:
标签: sql clickhouse
我有一个包含 [datetime, ad_id, event, platform] 列的表格,其中
ad_id - 广告的id
事件 - {'view', 'click'}
平台 - {'web'、'android'、'ios'}
我想查找在查看之前点击过的 ad_id。
我该怎么做?
【问题讨论】:
标签: sql clickhouse
select ad_id,
minIf(datetime, event = 'click' and datetime is not Null) clicktime,
minIf(datetime, event = 'view' and datetime is not Null) viewtime
from events
group by ad_id
having clicktime <> 0 and clicktime < viewtime
【讨论】:
select t.ad_id, t.clicktime, t.viewtime from (select ad_id, minIf(time, event = 'click') clicktime, minIf(time, event = 'view') viewtime from ads_data group by ad_id) t where t.clicktime is not null and t.clicktime < t.viewtime
select t.ad_id, t.clicktime, t.viewtime from (select ad_id, minIf(time, event = 'click' and time is not Null) clicktime, minIf(time, event = 'view' and time is not Null) viewtime from ads_data group by ad_id) t where isnotnull(t.clicktime) and t.clicktime < t.viewtime分组操作后存在空值(如ad_id没有点击事件),“isnotnull”分组后不删除。
HAVING clicktime <> 0 AND (clicktime < viewtime)