Skip to content

Instantly share code, notes, and snippets.

@nguyenhaison183
Created January 11, 2021 05:18
Show Gist options
  • Save nguyenhaison183/b740f08c99c4a20cecddda90af7ab1a4 to your computer and use it in GitHub Desktop.
Save nguyenhaison183/b740f08c99c4a20cecddda90af7ab1a4 to your computer and use it in GitHub Desktop.
Project: Attribution queries | Codecademy | Analyze data with SQL | 6. Analyze real data with SQL | Marketing attribution
/*
Here's the first-touch query, in case you need it
*/
WITH first_touch AS (
SELECT user_id,
MIN(timestamp) as first_touch_at
FROM page_visits
GROUP BY user_id),
ft_attr AS
(
SELECT ft.user_id,
ft.first_touch_at,
pv.utm_source,
pv.utm_campaign
FROM first_touch ft
JOIN page_visits pv
ON ft.user_id = pv.user_id
AND ft.first_touch_at = pv.timestamp
)
SELECT ft_attr.utm_source,
ft_attr.utm_campaign,
COUNT(*)
FROM ft_attr
GROUP BY 1, 2
ORDER BY 3 DESC;
WITH last_touch AS (
SELECT user_id,
MAX(timestamp) as last_touch_at
FROM page_visits
GROUP BY user_id),
lt_attr AS (
SELECT lt.user_id,
lt.last_touch_at,
pv.utm_source,
pv.utm_campaign,
pv.page_name
FROM last_touch lt
JOIN page_visits pv
ON lt.user_id = pv.user_id
AND lt.last_touch_at = pv.timestamp
)
SELECT lt_attr.utm_source,
lt_attr.utm_campaign,
COUNT(*)
FROM lt_attr
GROUP BY 1, 2
ORDER BY 3 DESC;
SELECT COUNT(DISTINCT user_id) as num_page_4
FROM page_visits
WHERE page_name = '4 - purchase';
SELECT utm_campaign,
COUNT(DISTINCT user_id) as num_page_4
FROM page_visits
WHERE page_name = '4 - purchase'
GROUP BY 1;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment