Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE TABLE CANDIVORE.SEMANTIC_LAYER.T_Coins_Spent AS
- SELECT * FROM (
- (SELECT
- DATE(derived_tstamp) interval_date
- ,ltv_group_static ltv_group
- ,league
- ,trophy_group
- ,seniority_bin
- ,"boxes" transaction_source
- ,to_varchar(prize_container[0][1]) resource_id
- ,coin_price
- ,CASE WHEN prize_container[0][1] LIKE "%Big%" THEN mode(resource_cnt)*6 WHEN prize_container[0][1] LIKE "%Small%" THEN mode(resource_cnt)*3 END resource_cnt
- ,CASE WHEN prize_container[0][1] LIKE "%Big%" THEN round(COUNT(*)/6) WHEN prize_container[0][1] LIKE "%Small%" THEN round(COUNT(*)/3) END occasions_bought
- ,CASE WHEN prize_container[0][1] LIKE "%Big%" THEN round(SUM(coin_price)/6) WHEN prize_container[0][1] LIKE "%Small%" THEN round(SUM(coin_price)/3) END coins_spent
- , SUM(coin_price)/COUNT(*) coins_per_item
- FROM (
- SELECT A.*,B.ltv_group ltv_group_static,B.league,B.trophy_group,B.seniority_bin FROM (
- (SELECT *, DATE(derived_tstamp) interval_date FROM CANDIVORE.PROD.F_USER_RESOURCE_TRANSACTION WHERE DATE(derived_tstamp) > "2023-01-01" AND is_coin_paid = 1 AND is_received_resource = TRUE AND is_chest = 1) A
- LEFT JOIN
- (SELECT user_id, interval_date, ltv_group,CASE
- WHEN trophies_cnt<3800 THEN "Studios"
- WHEN trophies_cnt<30000 THEN "Master_League"
- WHEN trophies_cnt>=30000 THEN "Legends_League"
- END AS league
- , 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
- ,seniority_bin FROM candivore.prod.daily_users_from_params WHERE interval_date > "2023-01-01") B
- ON A.user_id = B.user_id AND A.interval_date = B.interval_date
- ))
- WHERE is_chest = 1 AND is_coin_paid = 1 AND DATE(derived_tstamp) > "2023-01-01" GROUP BY 1,2,3,4,5,6,7,8 ORDER BY 1 DESC, 2)
- UNION ALL
- (SELECT interval_date
- ,ltv_group_static ltv_group
- ,league
- ,trophy_group
- ,seniority_bin
- ,transaction_source
- ,resource_id
- ,coin_price
- ,resource_cnt
- ,COUNT(*) occasions_bought
- ,SUM(coin_price) coins_spent
- ,SUM(coin_price)/COUNT(*) coins_per_item
- FROM (
- SELECT A.*,B.ltv_group ltv_group_static,B.league,B.trophy_group,B.seniority_bin FROM (
- (SELECT *, DATE(derived_tstamp) interval_date FROM CANDIVORE.PROD.F_USER_RESOURCE_TRANSACTION WHERE DATE(derived_tstamp) > "2023-01-01" AND is_coin_paid = 1 AND is_received_resource = TRUE AND is_chest = 0 AND transaction_source != "daily_deals") A
- LEFT JOIN
- (SELECT user_id, interval_date, ltv_group,CASE
- WHEN trophies_cnt<3800 THEN "Studios"
- WHEN trophies_cnt<30000 THEN "Master_League"
- WHEN trophies_cnt>=30000 THEN "Legends_League"
- END AS league
- , 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
- ,seniority_bin FROM candivore.prod.daily_users_from_params WHERE interval_date > "2023-01-01") B
- ON A.user_id = B.user_id AND A.interval_date = B.interval_date
- )) GROUP BY 1,2,3,4,5,6,7,8,9 ORDER BY 1 DESC, 2 , 3
- )
- UNION ALL
- (SELECT interval_date
- ,ltv_group_static ltv_group
- ,league
- ,trophy_group
- ,seniority_bin
- ,transaction_source
- ,resource_id
- ,resource_cnt coin_price
- ,1 resource_cnt
- ,COUNT(*) occasions_bought
- ,SUM(resource_cnt) coins_spent
- ,resource_cnt coins_per_item
- FROM (
- SELECT A.*,B.ltv_group ltv_group_static,B.league,B.trophy_group,B.seniority_bin FROM (
- (SELECT *, DATE(derived_tstamp) interval_date FROM CANDIVORE.PROD.F_USER_RESOURCE_TRANSACTION WHERE DATE(derived_tstamp) > "2023-01-01" AND resource_id = "Coin" AND is_received_resource = FALSE AND transaction_source IN ("tournament","match_end","create_team")) A
- LEFT JOIN
- (SELECT user_id, interval_date, ltv_group,CASE
- WHEN trophies_cnt<3800 THEN "Studios"
- WHEN trophies_cnt<30000 THEN "Master_League"
- WHEN trophies_cnt>=30000 THEN "Legends_League"
- END AS league
- , 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
- ,seniority_bin FROM candivore.prod.daily_users_from_params WHERE interval_date > "2023-01-01") B
- ON A.user_id = B.user_id AND A.interval_date = B.interval_date
- )) GROUP BY 1,2,3,4,5,6,7,8,9 ORDER BY 1 DESC, 2 , 3
- )
- )
- UNION ALL
- (SELECT interval_date
- ,ltv_group_static ltv_group
- ,league
- ,trophy_group
- ,seniority_bin
- ,transaction_source
- ,offer_id resource_id
- ,coin_price
- ,1 resource_cnt
- ,COUNT(*) occasions_bought
- ,SUM(coin_price) coins_spent
- ,SUM(coin_price)/COUNT(*) coins_per_item
- FROM (
- SELECT A.*,B.ltv_group ltv_group_static,B.league,B.trophy_group,B.seniority_bin FROM (
- (SELECT *, DATE(derived_tstamp) interval_date FROM CANDIVORE.PROD.F_USER_RESOURCE_TRANSACTION WHERE DATE(derived_tstamp) > "2023-01-01" AND resource_id = "Coin" AND is_received_resource = FALSE AND transaction_source = "daily_deals") A
- LEFT JOIN
- (SELECT user_id, interval_date, ltv_group,CASE
- WHEN trophies_cnt<3800 THEN "Studios"
- WHEN trophies_cnt<30000 THEN "Master_League"
- WHEN trophies_cnt>=30000 THEN "Legends_League"
- END AS league
- , 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
- ,seniority_bin FROM candivore.prod.daily_users_from_params WHERE interval_date > "2023-01-01") B
- ON A.user_id = B.user_id AND A.interval_date = B.interval_date
- )) GROUP BY 1,2,3,4,5,6,7,8,9 ORDER BY 1 DESC, 2 , 3
- )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement