Как можно вычислить анализ воронки из таблицы исходных событий SQL?

Как можно вычислить анализ воронки из таблицы исходных событий 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

Тогда воронка будет:

event1: 5 (users 1, 2, 3, 4, 5)
event2: 2 (users 1 and 3)
event3: 1 (user 1 only)

Это похоже на вопрос: проект схемы 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

2 ответа

Общий метод будет использовать 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' ;

Я бы предложил использовать группу:

      SELECT event, count(*) as 'Responses'
FROM table
GROUP by event;

Это даст вам что-то вроде:

Другие вопросы по тегам