-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy path08_Calculating_bouce_rates.sql
83 lines (54 loc) · 1.94 KB
/
08_Calculating_bouce_rates.sql
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
71
72
73
74
75
76
77
78
79
/*
OUTPUT:
"sessions" : 11048,
"bouced_sessions" : 6538,
"bouce_rate" : 0.5918
*/
-- STEP 1: Finding the first website_pageview_id for relevant sessions
-- STEP 2: identifying the landing page of each session
-- STEP 3: counting pageviews for each sessin, to identify "bouces"
-- STEP 4: summarizing by coutig total sessions and bouced sessions
USE mavenfuzzyfactory;
/*
We wanna find the landing page per session here.
*/
CREATE TEMPORARY TABLE first_pageviews
SELECT
website_session_id,
MIN(website_pageview_id) AS first_page_view
FROM website_pageviews
WHERE created_at < '2012-06-14'
GROUP BY website_session_id;
/*
first page view with url names
*/
CREATE TEMPORARY TABLE sessions_w_landing_pages
SELECT
first_pageviews.website_session_id,
website_pageviews.pageview_url AS landing_page
FROM first_pageviews
LEFT JOIN website_pageviews
ON website_pageviews.website_pageview_id = first_pageviews.first_page_view
WHERE website_pageviews.pageview_url = '/home';
/*
*/
CREATE TEMPORARY TABLE bouced_sessions
SELECT
sessions_w_landing_pages.website_session_id,
sessions_w_landing_pages.landing_page,
COUNT(website_pageviews.website_pageview_id) AS count_of_pages_viewed
FROM sessions_w_landing_pages
LEFT JOIN website_pageviews
ON website_pageviews.website_session_id = sessions_w_landing_pages.website_session_id
GROUP BY
sessions_w_landing_pages.landing_page,
sessions_w_landing_pages.website_session_id
HAVING
COUNT(website_pageviews.website_pageview_id) = 1;
SELECT
COUNT(DISTINCT sessions_w_landing_pages.website_session_id) AS sessions,
COUNT(DISTINCT bouced_sessions.website_session_id) AS bouced_sessions,
COUNT(DISTINCT bouced_sessions.website_session_id)/COUNT(DISTINCT sessions_w_landing_pages.website_session_id) AS bouce_rate
FROM sessions_w_landing_pages
LEFT JOIN bouced_sessions
ON sessions_w_landing_pages.landing_page = bouced_sessions.landing_page