-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path4_SQL_Funnel_Analysis.sql
More file actions
70 lines (70 loc) · 2.52 KB
/
Copy path4_SQL_Funnel_Analysis.sql
File metadata and controls
70 lines (70 loc) · 2.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
--FUNNEL ALL
SELECT first_readers.my_date,
first_readers.country,
first_readers.source,
first_readers.first_readers,
return_readers.return_readers,
subscriber.subscriber,
purchase.purchase
FROM
--FUNNEL #1 - FIRST READER
(SELECT my_date,
country,
source,
COUNT(DISTINCT (user_id)) AS first_readers
FROM first_time_reader
GROUP BY my_date,
country,
source
ORDER BY my_date) AS first_readers
LEFT JOIN
--FUNNEL #2 - RETURN READER
(SELECT first_time_reader.my_date,
first_time_reader.country,
first_time_reader.source,
COUNT(DISTINCT (returning_reader.user_id)) AS return_readers
FROM returning_reader
JOIN first_time_reader ON first_time_reader.user_id = returning_reader.user_id
GROUP BY first_time_reader.my_date,
first_time_reader.country,
first_time_reader.source
ORDER BY first_time_reader.my_date,
first_time_reader.country,
first_time_reader.source) AS return_readers
ON return_readers.my_date = first_readers.my_date
AND return_readers.country = first_readers.country
AND return_readers.source = first_readers.source
LEFT JOIN
--FUNNEL #3 - SUBSCRIBER
(SELECT subscriber.my_date,
first_time_reader.country,
first_time_reader.source,
COUNT(DISTINCT subscriber.user_id) AS subscriber
FROM subscriber
JOIN first_time_reader ON first_time_reader.user_id = subscriber.user_id
GROUP BY subscriber.my_date,
first_time_reader.country,
first_time_reader.source
ORDER BY subscriber.my_date,
first_time_reader.country,
first_time_reader.source) AS subscriber
ON subscriber.my_date = first_readers.my_date
AND subscriber.country = first_readers.country
AND subscriber.source = first_readers.source
LEFT JOIN
--FUNNEL #4 - PURCHASE
(SELECT purchase.my_date,
first_time_reader.country,
first_time_reader.source,
COUNT(DISTINCT purchase.user_id) AS purchase
FROM purchase
JOIN first_time_reader ON first_time_reader.user_id = purchase.user_id
GROUP BY purchase.my_date,
first_time_reader.country,
first_time_reader.source
ORDER BY purchase.my_date,
first_time_reader.country,
first_time_reader.source) AS purchase
ON purchase.my_date = first_readers.my_date
AND purchase.country = first_readers.country
AND purchase.source = first_readers.source;