Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- CREATE OR REPLACE PROCEDURE CANDIVORE.SEMANTIC_LAYER.T_COINS_SPENT()
- RETURNS VARCHAR(16777216)
- LANGUAGE JAVASCRIPT
- EXECUTE AS CALLER
- AS '
- var my_sql_command = `
- 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
- ,trophy_group_2
- ,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.trophy_group_2,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
- , 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 < 4500 THEN ''3800-4500''
- WHEN trophies_cnt < 5500 THEN ''4500-5500''
- WHEN trophies_cnt < 7000 THEN ''5500-7000''
- WHEN trophies_cnt < 10000 THEN ''7000-10000''
- WHEN trophies_cnt < 13000 THEN ''10000-13000''
- WHEN trophies_cnt < 16000 THEN ''13000-16000''
- WHEN trophies_cnt < 30000 THEN ''16000-30000''
- WHEN trophies_cnt >= 30000 THEN ''30000+''
- END AS trophy_group_2
- ,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,9)
- union all
- (SELECT interval_date
- ,ltv_group_static ltv_group
- ,league
- ,trophy_group
- ,trophy_group_2
- ,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_2,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
- , 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 < 4500 THEN ''3800-4500''
- WHEN trophies_cnt < 5500 THEN ''4500-5500''
- WHEN trophies_cnt < 7000 THEN ''5500-7000''
- WHEN trophies_cnt < 10000 THEN ''7000-10000''
- WHEN trophies_cnt < 13000 THEN ''10000-13000''
- WHEN trophies_cnt < 16000 THEN ''13000-16000''
- WHEN trophies_cnt < 30000 THEN ''16000-30000''
- WHEN trophies_cnt >= 30000 THEN ''30000+''
- END AS trophy_group_2
- ,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,10 order by 1 desc, 2 , 3
- )
- union all
- (SELECT interval_date
- ,ltv_group_static ltv_group
- ,league
- ,trophy_group
- ,trophy_group_2
- ,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_2,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
- , 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 < 4500 THEN ''3800-4500''
- WHEN trophies_cnt < 5500 THEN ''4500-5500''
- WHEN trophies_cnt < 7000 THEN ''5500-7000''
- WHEN trophies_cnt < 10000 THEN ''7000-10000''
- WHEN trophies_cnt < 13000 THEN ''10000-13000''
- WHEN trophies_cnt < 16000 THEN ''13000-16000''
- WHEN trophies_cnt < 30000 THEN ''16000-30000''
- WHEN trophies_cnt >= 30000 THEN ''30000+''
- END AS trophy_group_2
- ,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,10 order by 1 desc, 2 , 3
- )
- )
- union all
- (SELECT interval_date
- ,ltv_group_static ltv_group
- ,league
- ,trophy_group
- ,trophy_group_2
- ,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_2,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
- , 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 < 4500 THEN ''3800-4500''
- WHEN trophies_cnt < 5500 THEN ''4500-5500''
- WHEN trophies_cnt < 7000 THEN ''5500-7000''
- WHEN trophies_cnt < 10000 THEN ''7000-10000''
- WHEN trophies_cnt < 13000 THEN ''10000-13000''
- WHEN trophies_cnt < 16000 THEN ''13000-16000''
- WHEN trophies_cnt < 30000 THEN ''16000-30000''
- WHEN trophies_cnt >= 30000 THEN ''30000+''
- END AS trophy_group_2
- ,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,10 order by 1 desc, 2 , 3
- )
- `
- var statement = snowflake.createStatement({sqlText: my_sql_command});
- statement.execute();
- ';
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement