如何从原始事件的SQL表中计算渠道分析?

use*_*794 1 sql data-analysis

如何从原始事件的SQL表中计算渠道分析?

例如,如果渠道为事件1->事件2->事件3,则数据为:

user1, event1, time1
user1, event2, time2
user1, eventOther, time3
user2, event2, time4
user2, event1, time5
user3, event1, time6
user3, event2, time7
user4, event1, time8
user5, event1, time9
user6, event3, time10
user1, event3, time11
user1, event1, time12
user1, event3, time13
Run Code Online (Sandbox Code Playgroud)

然后,该渠道将是:

event1: 5 (users 1, 2, 3, 4, 5)
event2: 2 (users 1 and 3)
event3: 1 (user 1 only)
Run Code Online (Sandbox Code Playgroud)

类似于以下问题:用于渠道分析的SQL或OLAP模式设计

就像这样:

Query 1: select distinct user ids where event1
Query 2: select distinct user ids where event1 AND THEN event2 (is there an "AND THEN"?)
Query 3: select distinct user ids where event1 AND THEN event2 AND THEN event3
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 5

通用方法是使用left join和聚合:

select count(distinct d1.user) as NumEvent1,
       count(distinct d2.user) as NumEvent2,
       count(distinct d3.user) as NumEvent3
from data d1 left join
     data d2
     on d2.user = d1.user and d2.time > d1.time and d2.event = 'event2' left join
     data d3
     on d3.user = d2.user and d3.time > d2.time and d3.event = 'event3'
where d1.event = 'event1' ;
Run Code Online (Sandbox Code Playgroud)