Advertisement
YuvalGai

Untitled

Jul 12th, 2023
156
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.34 KB | None | 0 0
  1. SELECT \\
  2. ND.Interval_Date \\
  3. ,ND.Interval_Date_Time \\
  4. ,ND.LTV_Group \\
  5. ,ND.Seniority_Bin \\
  6. ,ND.Arena_Group
  7. ,ND.ltv_group_30d
  8. ,ND.trophy_group_2
  9. ,S.INTERVAL_SESSIONS \\
  10. ,COUNT(DISTINCT ND.User_Id) as DAU \\
  11. FROM ( \\
  12. SELECT \\
  13. TO_DATE(Next_Interval) as Interval_Date \\
  14. ,TIMESTAMP_FROM_PARTS(YEAR(Next_Interval),MONTH(Next_Interval),DAY(Next_Interval),DATE_PART(''HOUR'',Next_Interval),0,0,0) as Interval_Date_Time \\
  15. ,LTV_GROUP \\
  16. ,SENIORITY_BIN \\
  17. ,CASE WHEN CURRENT_ARENA_INDEX <=13 THEN ''Studios'' \\
  18. WHEN CURRENT_ARENA_INDEX <=22 THEN ''Master League'' \\
  19. ELSE ''Legends League'' \\
  20. END as Arena_Group \\
  21. ,USER_ID
  22. ,case
  23. when iap_30d = 0 or iap_30d is null then ''0''
  24. when iap_30d <= 1 then ''Low (0-1)''
  25. when iap_30d <= 2 then ''Med (1-3)''
  26. when iap_30d <= 5 then ''High (3-8)''
  27. when iap_30d <= 15 then ''Very High (8-15)''
  28. when iap_30d > 15 then ''VIP (15+)''
  29. end ltv_group_30d
  30. , CASE
  31. WHEN trophies_cnt < 125 THEN ''0-125''
  32. WHEN trophies_cnt < 1400 THEN ''125-1400''
  33. WHEN trophies_cnt < 2000 THEN ''1400-2000''
  34. WHEN trophies_cnt < 3800 THEN ''2000-3800''
  35. WHEN trophies_cnt < 4500 THEN ''3800-4500''
  36. WHEN trophies_cnt < 5500 THEN ''4500-5500''
  37. WHEN trophies_cnt < 7000 THEN ''5500-7000''
  38. WHEN trophies_cnt < 10000 THEN ''7000-10000''
  39. WHEN trophies_cnt < 13000 THEN ''10000-13000''
  40. WHEN trophies_cnt < 16000 THEN ''13000-16000''
  41. WHEN trophies_cnt < 30000 THEN ''16000-30000''
  42. WHEN trophies_cnt >= 30000 THEN ''30000+''
  43. END AS trophy_group_2
  44. ,ROW_NUMBER() OVER (PARTITION BY USER_ID ORDER BY DERIVED_TSTAMP DESC) as Last_Daily_Session \\
  45. FROM SNOWPLOW.DERIVED.USER_SESSION_START A \\
  46. INNER JOIN SNOWPLOW.DERIVED.TMP_NEXT_INTERVAL_DAU_SESSION_STARTS B \\
  47. ON A.DERIVED_TSTAMP <= Next_Interval AND DERIVED_TSTAMP >= DATEADD(''HOUR'',-24,Next_Interval) \\
  48. WHERE B.Next_Interval < GETDATE() \\
  49. ) ND \\
  50. LEFT JOIN ( \\
  51. SELECT DISTINCT Interval_Date_Time \\
  52. FROM SNOWPLOW.DERIVED.INTERVAL_DAU_SESSION_STARTS \\
  53. ) OldData ON ND.Interval_Date_Time = OldData.Interval_Date_Time \\
  54. INNER JOIN ( \\
  55. SELECT \\
  56. TO_DATE(Next_Interval) as Interval_Date \\
  57. ,TIMESTAMP_FROM_PARTS(YEAR(Next_Interval),MONTH(Next_Interval),DAY(Next_Interval),DATE_PART(''HOUR'',Next_Interval),0,0,0) as Interval_Date_Time \\
  58. ,LTV_GROUP \\
  59. ,SENIORITY_BIN \\
  60. ,CASE WHEN CURRENT_ARENA_INDEX <=13 THEN ''Studios'' \\
  61. WHEN CURRENT_ARENA_INDEX <=22 THEN ''Master League'' \\
  62. ELSE ''Legends League'' \\
  63. END as Arena_Group
  64. ,case
  65. when iap_30d = 0 or iap_30d is null then ''0''
  66. when iap_30d <= 1 then ''Low (0-1)''
  67. when iap_30d <= 2 then ''Med (1-3)''
  68. when iap_30d <= 5 then ''High (3-8)''
  69. when iap_30d <= 15 then ''Very High (8-15)''
  70. when iap_30d > 15 then ''VIP (15+)''
  71. end ltv_group_30d
  72. , CASE
  73. WHEN trophies_cnt < 125 THEN ''0-125''
  74. WHEN trophies_cnt < 1400 THEN ''125-1400''
  75. WHEN trophies_cnt < 2000 THEN ''1400-2000''
  76. WHEN trophies_cnt < 3800 THEN ''2000-3800''
  77. WHEN trophies_cnt < 4500 THEN ''3800-4500''
  78. WHEN trophies_cnt < 5500 THEN ''4500-5500''
  79. WHEN trophies_cnt < 7000 THEN ''5500-7000''
  80. WHEN trophies_cnt < 10000 THEN ''7000-10000''
  81. WHEN trophies_cnt < 13000 THEN ''10000-13000''
  82. WHEN trophies_cnt < 16000 THEN ''13000-16000''
  83. WHEN trophies_cnt < 30000 THEN ''16000-30000''
  84. WHEN trophies_cnt >= 30000 THEN ''30000+''
  85. END AS trophy_group_2
  86. ,COUNT (*) as INTERVAL_SESSIONS \\
  87. FROM SNOWPLOW.DERIVED.USER_SESSION_START A \\
  88. INNER JOIN SNOWPLOW.DERIVED.TMP_NEXT_INTERVAL_DAU_SESSION_STARTS B \\
  89. ON A.DERIVED_TSTAMP <= Next_Interval AND DERIVED_TSTAMP >= DATEADD(''HOUR'',-24,Next_Interval) \\
  90. WHERE B.Next_Interval < GETDATE() \\
  91. GROUP BY 1,2,3,4,5,6,7 \\
  92. ) S ON ND.Interval_Date_Time = S.Interval_Date_Time AND ND.LTV_Group = S.LTV_Group AND ND.Seniority_Bin = S.Seniority_Bin AND ND.Arena_Group = S.Arena_Group AND ND.trophy_group_2 = S.trophy_group_2 AND ND.ltv_group_30d = S.ltv_group_30d \\
  93. WHERE Last_Daily_Session = 1 \\
  94. AND OldData.Interval_Date_Time IS NULL \\
  95. GROUP BY 1,2,3,4,5,6,7,8;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement