Advertisement
YuvalGai

Untitled

Mar 23rd, 2023 (edited)
151
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
SQL 4.78 KB | None | 0 0
  1. CREATE OR REPLACE TABLE CANDIVORE.SEMANTIC_LAYER.T_BOOSTER_MODE_DASHBOARD AS
  2.  
  3. SELECT
  4.   A.*,
  5.   B.lo_event_id,
  6.   B.lo_event_min_trophies,
  7.   B.lo_event_max_trophies,
  8.   B.calendar_order,
  9.   B.lo_visible_on_homescreen,
  10.   B.lo_entry_tickets_required
  11. FROM
  12.   (
  13.     SELECT
  14.       DISTINCT match_end_date AS INTERVAL_DATE,
  15.       arena_group,
  16.       CASE WHEN trophies_cnt < 125 THEN ''0-125'' WHEN trophies_cnt < 1400 THEN ''125-1400'' WHEN trophies_cnt < 2000 THEN ''1400-2000'' WHEN trophies_cnt < 3800 THEN ''2000-3800'' WHEN trophies_cnt < 7000 THEN ''3800-7000'' WHEN trophies_cnt < 16000 THEN ''7000-16000'' WHEN trophies_cnt < 30000 THEN ''16000-30000'' WHEN trophies_cnt >= 30000 THEN ''30000+'' END AS trophy_group,
  17.       ltv_group,
  18.       NULL AS engagement_group,
  19.       is_payer,
  20.       NULL AS is_subscriber,
  21.       NULL AS SUBSCRIPTION_TIER,
  22.       NULL AS seniority_bin,
  23.       pvp_mode,
  24.       MATCH_TYPE_ID,
  25.       CASE WHEN is_random_mixer = TRUE THEN ''Daily_Random_Mixer'' ELSE match_type END AS MATCH_TYPE,
  26.       MATCH_MODE,
  27.       MODIFIER_1,
  28.       MODIFIER_2,
  29.       calendar_entry_id,
  30.       concat(
  31.         MATCH_SUB_TYPE,
  32.         ''-'',
  33.         MATCH_MODE,
  34.         ''+'',
  35.         MODIFIER_1,
  36.         ''-'',
  37.         MODIFIER_2
  38.       ) AS match_sub_type,
  39.       RESOURCE_SUB_TYPE,
  40.       BOOSTER_NAME,
  41.       RIVAL_RESOURCE_SUB_TYPE,
  42.       RUMBLE_SIZE,
  43.       CASE WHEN PVP_MODE NOT LIKE 'PvP' THEN 'No Rival(Solo/Rumble)' ELSE RIVAL_BOOSTER_NAME END RIVAL_BOOSTER_NAME,
  44.       rounds_cnt,
  45.       is_private,
  46.       SUM(ROUNDS_CNT) AS ROUNDS,
  47.       SUM(MATCH_SCORE) AS MATCH_SCORE,
  48.       SUM(MATCH_DURATION_SEC) / 60 AS MATCH_DURATION_MINS,
  49.       SUM(ABILITY_ACTIVATED_CNT) AS BOOSTER_ACTIVATIONS,
  50.       SUM(ifnull(CS_RESYNCS, 0)) AS RESYNCS,
  51.       COUNT(
  52.         DISTINCT CASE WHEN CS_RESYNCS > 0 THEN concat(match_id, user_id, rematch_cnt) END
  53.       ) AS RESYNC_MATCHES,
  54.       SUM(ifnull(ERROR_RESYNCS, 0)) AS ERROR_RESYNCS,
  55.       COUNT(
  56.         DISTINCT CASE WHEN ERROR_RESYNCS > 0 THEN concat(match_id, user_id, rematch_cnt) END
  57.       ) AS ERROR_RESYNC_MATCHES,
  58.       SUM(
  59.         CASE WHEN is_conceded = 1
  60.         AND is_won = 0
  61.         AND match_duration_sec = 0 THEN 1 END
  62.       ) AS CONCEDED_MATCHES,
  63.       SUM(
  64.         CASE WHEN is_conceded = 1
  65.         AND is_won = 0
  66.         AND match_duration_sec BETWEEN 1
  67.         AND 10 THEN 1 END
  68.       ) AS CONCEDED_MATCHES_1_10,
  69.       SUM(
  70.         CASE WHEN is_conceded = 1
  71.         AND is_won = 0
  72.         AND match_duration_sec BETWEEN 10
  73.         AND 60 THEN 1 END
  74.       ) AS CONCEDED_MATCHES_10_60,
  75.       SUM(
  76.         CASE WHEN is_conceded = 1
  77.         AND is_won = 0
  78.         AND match_duration_sec > 60 THEN 1 END
  79.       ) AS CONCEDED_MATCHES_AFTER_60sec,
  80.       SUM(ifnull(rival_played_out_of_time, 0)) AS OOT,
  81.       COUNT(
  82.         DISTINCT CASE WHEN rival_played_out_of_time > 0 THEN concat(match_id, user_id, rematch_cnt) END
  83.       ) AS OOT_MATCHES,
  84.       COUNT(DISTINCT concat(match_id, user_id, rematch_cnt)) AS MATCHES,
  85.       SUM(is_won) AS wins,
  86.       AVG(MATCH_RANK) AS AVG_MATCH_RANK
  87.     FROM
  88.       CANDIVORE.PROD.F_USER_MATCH
  89.     WHERE
  90.       is_bot = FALSE
  91.       AND MATCH_END_DATE > DATEADD(DAY, -61, GETDATE())
  92.     GROUP BY
  93.       1,
  94.       2,
  95.       3,
  96.       4,
  97.       5,
  98.       6,
  99.       7,
  100.       8,
  101.       9,
  102.       10,
  103.       11,
  104.       12,
  105.       13,
  106.       14,
  107.       15,
  108.       16,
  109.       17,
  110.       18,
  111.       19,
  112.       20,
  113.       21,
  114.       22,
  115.       23,
  116.       24
  117.   ) A
  118.   LEFT JOIN (
  119.     SELECT
  120.       A.LO_ENTRY_ID,
  121.       B.lo_event_id,
  122.       A.interval_date,
  123.       A.lo_entry_name,
  124.       A.calendar_order,
  125.       A.lo_visible_on_homescreen,
  126.       CASE WHEN min0 IS NULL THEN min1 ELSE min0 END AS lo_event_min_trophies,
  127.       CASE WHEN max0 IS NULL THEN max1 ELSE max0 END AS lo_event_max_trophies,
  128.       lo_entry_tickets_required
  129.     FROM
  130.       (
  131.         (
  132.           SELECT
  133.             LO_ENTRY_ID,
  134.             DATE(derived_tstamp) interval_date,
  135.             LO_ENTRY_NAME,
  136.             calendar_order,
  137.             lo_visible_on_homescreen,
  138.             lo_entry_min_trophies min0,
  139.             lo_entry_max_trophies max0,
  140.             lo_entry_tickets_required
  141.           FROM
  142.             (SELECT * FROM (SELECT *,CASE WHEN lo_entry_ts IS NULL THEN lo_entry_update_ts ELSE lo_entry_ts END lo_entry_ts2,ROW_NUMBER() OVER (partition BY lo_entry_id ORDER BY lo_entry_ts2 DESC) rn FROM CANDIVORE.PROD.F_LIVEOPS_CALENDAR) WHERE rn = 1)
  143.         ) A
  144.         LEFT JOIN (
  145.           SELECT
  146.             DATE(derived_tstamp) AS interval_date,
  147.             lo_event_id,
  148.             lo_event_min_trophies AS min1,
  149.             lo_event_max_trophies AS max1
  150.           FROM
  151.             CANDIVORE.PROD.DIM_EVENT_CONFIG
  152.         ) B ON A.LO_ENTRY_NAME = B.LO_EVENT_ID
  153.       )
  154.   ) B ON A.calendar_entry_id = B.lo_entry_id
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement