Advertisement
kirzecy670

Untitled

Jan 31st, 2025
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. WITH
  2. open_action_counts AS (
  3.     SELECT
  4.         ft.uid,
  5.         uniqExact(IF(action = 'open_settings_menu', dt, NULL)) AS open_settings,
  6.         uniqExact(IF(action = 'open_add_family', dt, NULL)) AS open_family,
  7.         uniqExact(IF(action = 'chat_screen', dt, NULL)) AS open_chat
  8.     FROM
  9.         stat.funnelTrack AS ft
  10.     JOIN
  11.         analytics.parent_properties AS pp
  12.         ON ft.uid = pp.uid
  13.     WHERE
  14.         ft.dt >= '2025-01-01'
  15.         AND ft.dt < '2025-02-01'
  16.         AND pp.full_reg_datetime >= '2025-01-01'
  17.         AND pp.full_reg_datetime < '2025-01-28'
  18.         AND ft.action IN ('open_settings_menu', 'open_add_family', 'chat_screen')
  19.         AND ft.ts BETWEEN pp.full_reg_datetime AND pp.full_reg_datetime + INTERVAL '2 days'
  20.     GROUP BY
  21.         ft.uid
  22. ),
  23. user_activity AS (
  24.     SELECT
  25.         pa.uid,
  26.         COUNT(*) AS days,
  27.         SUM(LENGTH(open) + LENGTH(open_first)) AS sessions,
  28.         SUM(notEmpty(open)) AS open_actions,
  29.         SUM(notEmpty(open_parent_activity)) AS open_parent_activity,
  30.         SUM(notEmpty(open_function_records)) AS open_func_records,
  31.         SUM(notEmpty(listen_live_clicked)) AS listen_live_clicks,
  32.         SUM(notEmpty(listen_live_started)) AS listen_live_starts,
  33.         SUM(notEmpty(open_function_noise)) AS open_func_noise,
  34.         SUM(notEmpty(noise_sent)) AS noise_sent_clicks,
  35.         SUM(notEmpty(noise_requested)) AS noise_requests,
  36.         SUM(notEmpty(open_function_zones)) AS open_func_zones,
  37.         SUM(notEmpty(zones_place_create)) AS zones_place_creates,
  38.         SUM(notEmpty(zones_place_create_done)) AS zones_place_creates_done,    
  39.         SUM(notEmpty(open_function_appstat)) AS open_func_appstat
  40.     FROM
  41.         analytics.parent_actions AS pa
  42.     JOIN
  43.         analytics.parent_properties AS pp
  44.         ON pa.uid = pp.uid
  45.     WHERE
  46.         pa.dt >= '2025-01-01'
  47.         AND pa.dt < '2025-02-01'
  48.         AND pp.full_reg_datetime >= '2025-01-01'
  49.         AND pp.full_reg_datetime < '2025-01-28'
  50.         AND pa.dt BETWEEN pp.full_reg_datetime::date AND pp.full_reg_datetime::date + INTERVAL '2' DAY
  51.     GROUP BY
  52.         pa.uid
  53. ),
  54. recent_payments AS (
  55.     SELECT
  56.         uid,
  57.         MIN(dt) AS paid_from_date,
  58.         MAX(PaidTill)::date AS paid_till_date,
  59.         MAX(Tag LIKE '%care_plus%' OR Tag LIKE '%premium%') AS flg_premium
  60.     FROM
  61.         analytics.money
  62.     WHERE
  63.         ChargeNumber >= 1
  64.         AND was_refunded != 1
  65.         AND CONCAT(Type, Value) IN ('subscription_30', 'subscription_365')
  66.         AND USDGross >= 0.25
  67.         AND dt >= '2024-01-01'
  68.         AND dt >= date_trunc('week', today()) - INTERVAL '30 day'
  69.     GROUP BY
  70.         uid
  71. ),
  72. metrics AS (
  73.     SELECT
  74.         pp.region,
  75.         pp.platform,
  76.         pp.full_reg_datetime,
  77.         pp.uid as user_uid,
  78.         CASE
  79.             WHEN child_android_cnt > 0 AND child_ios_cnt > 0 THEN 'both'
  80.             WHEN child_android_cnt > 0 THEN 'android'
  81.             WHEN child_ios_cnt > 0 THEN 'ios'
  82.             WHEN child_watch_cnt > 0 THEN 'watch'
  83.             ELSE 'other'
  84.         END AS child_group,
  85.         ua.days,
  86.         ua.sessions,
  87.         ua.open_actions,
  88.         ua.open_parent_activity,
  89.         ua.open_func_records,
  90.         ua.listen_live_clicks,
  91.         ua.listen_live_starts,
  92.         ua.open_func_noise,
  93.         ua.noise_sent_clicks,
  94.         ua.noise_requests,
  95.         ua.open_func_zones,
  96.         ua.zones_place_creates,
  97.         ua.zones_place_creates_done,    
  98.         ua.open_func_appstat,
  99.         oac.open_settings,
  100.         oac.open_family,
  101.         oac.open_chat,
  102.         CASE
  103.             WHEN ua.days BETWEEN 29 AND 30 THEN 'F. 29-30 days'
  104.             WHEN ua.days BETWEEN 22 AND 28 THEN 'E. 22-28 days'
  105.             WHEN ua.days BETWEEN 15 AND 21 THEN 'D. 15-21 days'
  106.             WHEN ua.days BETWEEN 8 AND 14 THEN 'C. 8-14 days'
  107.             WHEN ua.days BETWEEN 3 AND 7 THEN 'B. 3-7 days'
  108.             WHEN ua.days BETWEEN 1 AND 2 THEN 'A. 1-2 days'
  109.             ELSE 'Other'
  110.         END AS activity_group,
  111. --        ROUND(ua.sessions / NULLIF(ua.days, 0), 0) AS avg_sessions_per_day,
  112.         CASE
  113.             WHEN dateDiff('day', pp.full_reg_datetime, now()) < 7 THEN 'A. 1 week'
  114.             WHEN dateDiff('day', pp.full_reg_datetime, now()) BETWEEN 7 AND 29 THEN 'B. 2-4 weeks'
  115.             WHEN dateDiff('day', pp.full_reg_datetime, now()) BETWEEN 30 AND 59 THEN 'C. 2 months'
  116.             WHEN dateDiff('day', pp.full_reg_datetime, now()) BETWEEN 60 AND 89 THEN 'D. 3 months'
  117.             WHEN dateDiff('day', pp.full_reg_datetime, now()) BETWEEN 90 AND 119 THEN 'E. 4 months'
  118.             WHEN dateDiff('day', pp.full_reg_datetime, now()) BETWEEN 120 AND 149 THEN 'F. 5 months'
  119.             WHEN dateDiff('day', pp.full_reg_datetime, now()) BETWEEN 120 AND 179 THEN 'G. 6 months'
  120.             WHEN dateDiff('day', pp.full_reg_datetime, now()) BETWEEN 180 AND 364 THEN 'H. 7-12 months'
  121.             WHEN dateDiff('day', pp.full_reg_datetime, now()) BETWEEN 365 AND 729 THEN 'I. 1-2 years'
  122.             ELSE 'J. > 2 years'
  123.         END AS weeks_group,
  124.         -- For checking if usage is 1 or more
  125.         IF(ua.open_actions >= 1, 1, 0) AS open_actions_1_or_more,
  126.         IF(ua.open_parent_activity >= 1, 1, 0) AS open_parent_activity_1_or_more,
  127.         IF(ua.open_func_records >= 1, 1, 0) AS open_func_records_1_or_more,
  128.         IF(ua.listen_live_clicks >= 1, 1, 0) AS listen_live_clicks_1_or_more,
  129.         IF(ua.listen_live_starts >= 1, 1, 0) AS listen_live_starts_1_or_more,
  130.         IF(ua.open_func_noise >= 1, 1, 0) AS open_func_noise_1_or_more,
  131.         IF(ua.noise_sent_clicks >= 1, 1, 0) AS noise_sent_clicks_1_or_more,
  132.         IF(ua.noise_requests >= 1, 1, 0) AS noise_requests_1_or_more,
  133.         IF(ua.open_func_zones >= 1, 1, 0) AS open_func_zones_1_or_more,
  134.         IF(ua.zones_place_creates >= 1, 1, 0) AS zones_place_creates_1_or_more,
  135.         IF(ua.zones_place_creates_done >= 1, 1, 0) AS zones_place_creates_done_1_or_more,
  136.         IF(ua.open_func_appstat >= 1, 1, 0) AS open_func_appstat_1_or_more,
  137.         IF(oac.open_settings >= 1, 1, 0) AS open_settings_1_or_more,
  138.         IF(oac.open_family >= 1, 1, 0) AS open_family_1_or_more,
  139.         IF(oac.open_chat >= 1, 1, 0) AS open_chat_1_or_more,
  140.         -- For checking if usage is 2 or more
  141.         IF(ua.open_actions >= 2, 1, 0) AS open_actions_2_or_more,
  142.         IF(ua.open_parent_activity >= 2, 1, 0) AS open_parent_activity_2_or_more,
  143.         IF(ua.open_func_records >= 2, 1, 0) AS open_func_records_2_or_more,
  144.         IF(ua.listen_live_clicks >= 2, 1, 0) AS listen_live_clicks_2_or_more,
  145.         IF(ua.listen_live_starts >= 2, 1, 0) AS listen_live_starts_2_or_more,
  146.         IF(ua.open_func_noise >= 2, 1, 0) AS open_func_noise_2_or_more,
  147.         IF(ua.noise_sent_clicks >= 2, 1, 0) AS noise_sent_clicks_2_or_more,
  148.         IF(ua.noise_requests >= 2, 1, 0) AS noise_requests_2_or_more,
  149.         IF(ua.open_func_zones >= 2, 1, 0) AS open_func_zones_2_or_more,
  150.         IF(ua.zones_place_creates >= 2, 1, 0) AS zones_place_creates_2_or_more,
  151.         IF(ua.zones_place_creates_done >= 2, 1, 0) AS zones_place_creates_done_2_or_more,
  152.         IF(ua.open_func_appstat >= 2, 1, 0) AS open_func_appstat_2_or_more,
  153.         IF(oac.open_settings >= 2, 1, 0) AS open_settings_2_or_more,
  154.         IF(oac.open_family >= 2, 1, 0) AS open_family_2_or_more,
  155.         IF(oac.open_chat >= 2, 1, 0) AS open_chat_2_or_more,
  156.         rp.flg_premium,
  157.         rp.uid != '' as flg_subscription
  158.     FROM
  159.         analytics.parent_properties AS pp
  160.     LEFT JOIN
  161.         user_activity AS ua ON ua.uid = pp.uid
  162.     LEFT JOIN
  163.         open_action_counts AS oac ON oac.uid = pp.uid
  164.     LEFT JOIN recent_payments as rp on rp.uid = pp.uid
  165.     WHERE
  166.         pp.is_full_register = 1
  167.         AND pp.full_reg_datetime >= '2025-01-01'
  168.         AND pp.full_reg_datetime < '2025-01-28'
  169.         AND pp.region in ('ru', 'global')
  170.         AND pp.platform in ('Android', 'iOS')
  171. )
  172. SELECT *
  173. FROM metrics
  174. ORDER BY user_uid
  175. LIMIT 1000000;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement