퍼널(funnel) :
(출처 - 데이터리안 : https://datarian.io/blog/funnel-analysis)
퍼널분석 :
SELECT
COUNT(DISTINCT CASE WHEN event_name = 'visit' THEN user_id END) AS visit_users,
COUNT(DISTINCT CASE WHEN event_name = 'view_product' THEN user_id END) AS view_product_users,
COUNT(DISTINCT CASE WHEN event_name = 'add_to_cart' THEN user_id END) AS add_to_cart_users,
COUNT(DISTINCT CASE WHEN event_name = 'checkout' THEN user_id END) AS checkout_users,
COUNT(DISTINCT CASE WHEN event_name = 'purchase' THEN user_id END) AS purchase_users
FROM events;
WITH funnel AS (
SELECT
user_id,
MAX(CASE WHEN event_name = 'visit' THEN 1 ELSE 0 END) AS visit,
MAX(CASE WHEN event_name = 'view_product' THEN 1 ELSE 0 END) AS view_product,
MAX(CASE WHEN event_name = 'add_to_cart' THEN 1 ELSE 0 END) AS add_to_cart,
MAX(CASE WHEN event_name = 'checkout' THEN 1 ELSE 0 END) AS checkout,
MAX(CASE WHEN event_name = 'purchase' THEN 1 ELSE 0 END) AS purchase
FROM events
GROUP BY user_id
)
SELECT
COUNT(*) AS total_users,
SUM(visit) AS visit_users,
SUM(view_product) AS view_product_users,
SUM(add_to_cart) AS add_to_cart_users,
SUM(checkout) AS checkout_users,
SUM(purchase) AS purchase_users
FROM funnel;
SELECT
COUNT(IF(event_name = 'visit', user_id, NULL)) AS visit_users,
COUNT(IF(event_name = 'view_product', user_id, NULL)) AS view_product_users,
COUNT(IF(event_name = 'add_to_cart', user_id, NULL)) AS add_to_cart_users,
COUNT(IF(event_name = 'checkout', user_id, NULL)) AS checkout_users,
COUNT(IF(event_name = 'purchase', user_id, NULL)) AS purchase_users
FROM events;