본 내용은 데이터리안 'SQL 데이터 분석 캠프 실전반'을 수강하며 작성한 내용입니다.
SELECT COUNT(DISTINCT CONCAT(user_pseudo_id, ga_session_id))
FROM ga
WHERE page_title = '백문이불여일타 SQL 캠프 입문반'
AND event_name = 'page_view'
WITH pv AS (
SELECT user_pseudo_id
, ga_session_id
, event_timestamp_kst AS pv_at
FROM ga
WHERE page_title = '백문이불여일타 SQL 캠프 입문반'
AND event_name = 'page_view'
), scroll AS (
SELECT user_pseudo_id
, ga_session_id
, event_timestamp_kst AS scroll_at
FROM ga
WHERE page_title = '백문이불여일타 SQL 캠프 입문반'
AND event_name = 'scroll'
)
SELECT COUNT(DISTINCT pv.user_pseudo_id, pv.ga_session_id) AS pv
, COUNT(DISTINCT scroll.user_pseudo_id, scroll.ga_session_id) AS scroll_after_pv
, COUNT(DISTINCT scroll.user_pseudo_id, scroll.ga_session_id) / COUNT(DISTINCT pv.user_pseudo_id, pv.ga_session_id) AS pv_scroll_rate
FROM pv
LEFT JOIN scroll ON pv.user_pseudo_id = scroll.user_pseudo_id
AND pv.ga_session_id = scroll.ga_session_id
AND pv.pv_at <= scroll.scroll_at
WITH pv AS (
SELECT user_pseudo_id
, ga_session_id
, event_timestamp_kst AS pv_at
FROM ga
WHERE page_title = '백문이불여일타 SQL 캠프 입문반'
AND event_name = 'page_view'
), scroll AS (
SELECT user_pseudo_id
, ga_session_id
, event_timestamp_kst AS scroll_at
FROM ga
WHERE page_title = '백문이불여일타 SQL 캠프 입문반'
AND event_name = 'scroll'
), click AS (
SELECT user_pseudo_id
, ga_session_id
, event_timestamp_kst AS click_at
FROM ga
WHERE page_title = '백문이불여일타 SQL 캠프 입문반'
AND event_name IN ('SQL_basic_form_click', 'SQL_basic_1day_form_click', 'SQL_package_form_click')
)
SELECT COUNT(DISTINCT pv.user_pseudo_id, pv.ga_session_id) AS pv
, COUNT(DISTINCT scroll.user_pseudo_id, scroll.ga_session_id) AS scroll
, COUNT(DISTINCT click.user_pseudo_id, click.ga_session_id) AS click
, COUNT(DISTINCT scroll.user_pseudo_id, scroll.ga_session_id) / COUNT(DISTINCT pv.user_pseudo_id, pv.ga_session_id) AS pv_scroll_rate
, COUNT(DISTINCT click.user_pseudo_id, click.ga_session_id) / COUNT(DISTINCT scroll.user_pseudo_id, scroll.ga_session_id) as scroll_click_rate
, COUNT(DISTINCT click.user_pseudo_id, click.ga_session_id) / COUNT(DISTINCT pv.user_pseudo_id, pv.ga_session_id) AS pv_click_rate
FROM pv
LEFT JOIN scroll ON pv.user_pseudo_id = scroll.user_pseudo_id
AND pv.ga_session_id = scroll.ga_session_id
AND pv.pv_at <= scroll.scroll_at
LEFT JOIN click ON scroll.user_pseudo_id = click.user_pseudo_id
AND scroll.ga_session_id = click.ga_session_id
AND scroll.scroll_at <= click.click_at