notebook/996eco/ads_996eco_index_channel_m.sql
2025-04-30 17:17:09 +08:00

551 lines
20 KiB
SQL

CREATE TABLE datasci.ads_996eco_index_channel_m (
index_type text,
data_month text,
re_channel text,
pay_cnt bigint,
pay_amount bigint,
pay_amount bigint,
mau bigint,
device_type text,
device_type_new text,
act_num bigint,
reg_count bigint,
);
DELETE FROM datasci.ads_996eco_index_channel_m WHERE ds = '${month}';
--付费人数和金额
--月付费人数和金额
WITH ga AS (
SELECT
id,
name
FROM public.gm_apply
WHERE bind_type = 1 AND bind_game_type = 1
)
,
po AS (
SELECT
appid,
ds::date ds,
user_id,
case when channel~*'996box' then '盒子'
when channel~'ai6' then 'ai6'
when channel~'玩心' then '玩心'
when channel~'应用宝' then '腾讯应用宝'
when channel~'纸片' then '纸片'
when channel~'团团' then '团团'
when channel~'335玩' then '335玩'
when channel~'朋克' then '朋克'
when channel~'安徽追游' then '安徽追游'
when channel~'冰火' then '冰火'
when channel~'心乐' then '心乐'
when channel ~*'华为|vivo|oppo|魅族|努比亚|联想|酷派' then '硬核联盟'
when channel~'9377' then '9377'
when channel~'智灵' then '智灵'
when channel~'掌游' then '掌游'
when channel~'上士' then '上士'
when channel~'攒趣' then '攒趣'
when channel~'掌玩' then '掌玩'
when channel~'贪玩' then '贪玩'
when channel~*'wx|微信' then '微信'
when channel~'公众号' then '公众号'
when channel~*'qq' then 'QQ'
when channel~'七牛' then '七牛'
when channel~'霸气' then '霸气'
when channel~*'xy' then 'XY'
when channel~'芝麻互娱' then '芝麻互娱'
when channel~'龙翔' then '龙翔'
when channel~'布咕' then '布咕'
when channel~'小柠互娱' then '小柠互娱'
when channel~'春秋玩' then '春秋玩'
when channel~'欢喜时代' then '欢喜时代'
when channel~'上游' then '上游'
when channel~'倾程' then '倾程'
when channel~'绿洲' then '绿洲'
when channel~'雷电' then '雷电'
when channel~'点点' then '点点'
when channel~'小七' then '小七'
when channel~'瓜玩' then '瓜玩'
when channel~'艺云' then '艺云'
when channel~'冠游' then '冠游'
when channel~'玄藏' then '玄藏'
when channel~'羽龙' then '羽龙'
when channel~'星云' then '星云'
when channel~'爱尚游' then '爱尚游'
when channel~'昊玩' then '昊玩'
when channel~'8酷' then '8酷'
when channel~'迅玩' then '迅玩'
when channel~'星游' then '星游'
when channel~'小米' then '小米'
when channel~'趣城' then '趣城'
when channel~'诺游' then '诺游'
when channel~'洛谷' then '洛谷'
when channel~'司墨' then '司墨'
when channel~'脚印' then '脚印'
when channel~'神游' then '神游'
when channel~'拓乐' then '拓乐'
when channel~'360' then '360'
when channel~'日昇' then '日昇'
when channel~'触点' then '触点'
when channel~'冠游' then '冠游'
when channel~'巴兔' then '巴兔'
when channel~'天纵' then '天纵'
when channel~'早游戏' then '早游戏'
when channel~'爱趣' then '爱趣'
when channel~'星楠祥' then '星楠祥'
when channel~'贪游' then '贪游'
when channel~'君游' then '君游'
when channel~'996直播间' then '996直播间'
when channel~'mumu' then 'mumu'
when channel~'吉祥' then '吉祥直播间'
when channel~'溪谷' then '溪谷'
when channel~'优谷' then '优谷'
when channel~'闪趣' then '闪趣'
when channel~'8酷' then '8酷'
when channel~'抖音' then '抖音'
when channel~'斗鱼' then '斗鱼'
when channel~'虎牙' then '虎牙'
when channel~'巨量' then '巨量'
when channel~'快手' then '快手'
when channel~'爱奇艺' then '爱奇艺'
when channel~'007' then '007'
when channel~'圣宏' then '圣宏'
when channel~'顺火' then '顺火'
when channel~'飞火' then '飞火'
when channel~'乐岛' then '乐岛'
when channel~'传柒' then '传柒'
when channel~'星际' then '星际'
when channel~'玖趣' then '玖趣'
when channel~*'ku25' then 'ku25'
when channel~'8090' then '8090'
when channel~*'appstore' then 'AppStore'
when channel~'欢娱' then '欢娱'
when channel~'逐梦' then '逐梦'
when channel~'兴动' then '兴动'
when channel~'3733' then '3733'
when channel~'第一游戏' then '第一游戏'
when channel~'公会' then '公会'
when channel~'欢娱' then '欢娱'
when channel~'335玩' then '335玩'
when channel~*'4yx' then '4yx'
when channel~'37' then '37'
when channel~'开心' then '开心'
when channel~* 'ios|苹果' then 'ios苹果端具体不详'
when channel~'触点' then '触点'
when channel~'游码' then '游码'
when channel~*'45yx' then '45yx'
when channel~'巨量' then '巨量'
when channel~'小铃铛' then '小铃铛'
when channel~'2345' then '2345'
when channel~'梨子' then '梨子'
when channel~'麦游' then '麦游'
when channel~'群英' then '群英'
when channel~'阅文' then '阅文'
when channel~*'kopo' then 'kopo'
when channel~'创启' then '创启'
when channel~'4366' then '4366'
when channel~'大楚' then '大楚'
when channel~'巅峰' then '巅峰'
when channel~'277' then '277'
when channel~'112233' then '112233'
when channel~'714' then '714'
when channel~'4399' then '4399'
when channel~'追忆' then '追忆'
when channel~*'yy' then 'yy'
when channel~'588' then '588'
when channel~'八门' then '八门'
when channel~*'pdd' then 'pdd'
when channel~'9917' then '9917'
when channel~'51517' then '51517'
when channel~*'4yx' then '4yx'
when channel~'好汉' then '好汉'
when channel~'51' then '51'
when channel~'葫芦侠' then '葫芦侠'
when channel~'虫虫' then '虫虫'
when channel~'跃游' then '跃游'
when channel~'天天' then '天天'
when channel~'66' then '66'
when channel~'嘉禾' then '嘉禾'
when channel~'爱游' then '爱游'
when channel~'乐疯玩' then '乐疯玩'
when channel~'游戏饭' then '游戏饭'
else '其他' end as re_channel,
amount / 100 AS pay_amount
FROM public.ods_payment_order
WHERE status = 1
AND ds BETWEEN '${bizmonth}' AND '${bizdate}'
)
INSERT INTO
datasci.ads_996eco_index_channel_m (index_type,data_month,re_channel,pay_cnt,pay_amount)
SELECT
'pay' AS index_type,
'${month}' AS data_month,
re_channel,
UNIQ(po.user_id) AS pay_cnt,
SUM(po.pay_amount) AS pay_amount
FROM po
INNER JOIN
ga ON po.appid = ga.id
LEFT JOIN
public.ods_newly_account na ON po.appid = na.appid AND po.user_id = na.user_id
GROUP BY 1,2,3
;
-- mau
WITH game_apply AS
(
SELECT id
,name
,bind_game_id
FROM public.gm_apply
WHERE bind_game_type = 1
)
INSERT INTO
datasci.ads_996eco_index_box_m (index_type,data_month,is_box,mau)
SELECT 'mau' index_type
,'${month}' data_month
,CASE WHEN grouping(user_flag) = 0 THEN user_flag
ELSE '总计'
END AS is_box
,uniq(user_id) AS mau
FROM (
SELECT CASE WHEN t1.channel LIKE '%996box%' THEN '盒子'
ELSE '非盒子'
END AS user_flag
,user_id
FROM public.ods_active_account t1
INNER JOIN game_apply t2
ON t1.appid = t2.id
WHERE t1.ds BETWEEN '${hisdate}' AND '${bizdate}'
) t
GROUP BY user_flag
;
-- mau-device
WITH game_apply AS
(
SELECT id
,name
,bind_game_id
FROM public.gm_apply
WHERE bind_game_type = 1
)
INSERT INTO
datasci.ads_996eco_index_box_m (index_type,data_month,is_box,device_type,device_type_new,act_num)
SELECT 'mau-device' index_type
,'${month}' AS data_month
,CASE WHEN t1.channel LIKE '%996box%' THEN '盒子'
ELSE '非盒子'
END AS is_box
,t1.device_type
,CASE WHEN lower(t1.device_type) LIKE '%h5%' THEN 'H5'
WHEN lower(t1.device_type) LIKE '%pc%' THEN 'PC'
WHEN lower(t1.device_type) LIKE '%ios%' THEN 'IOS'
ELSE t1.device_type
END AS device_type_new
,uniq(user_id) AS act_num
FROM public.ods_active_account t1
INNER JOIN game_apply t2
ON t1.appid = t2.id
WHERE t1.ds BETWEEN '${hisdate}' AND '${bizdate}'
GROUP BY 1,2,3,4
;
-- reg
WITH legend_apps AS
(
SELECT id AS appid
FROM gm_apply
WHERE bind_game_type = 1
AND bind_type = 1 -- 默认应用
)
---传奇游戏
,tmp_ods_newly_account AS
(
SELECT *
FROM ods_newly_account
WHERE ds BETWEEN '${hisdate}' AND '${bizdate}'
)
,box_users AS
(
SELECT user_id
FROM tmp_ods_newly_account
WHERE appid = 1015
OR channel ~ '996box'
OR channel IN (
SELECT value AS channel
FROM public.dws_app_props
WHERE appid = 1015
AND prop = 2
)
GROUP BY user_id
)
-- 筛选出有盒子记录以及玩过传奇游戏的玩家
,box_users_with_legend AS
(
SELECT acc.user_id
FROM tmp_ods_newly_account acc
WHERE
EXISTS(
SELECT 1
FROM legend_apps app
WHERE acc.appid = app.appid
)
AND
EXISTS(
SELECT 1
FROM box_users box
WHERE box.user_id = acc.user_id
)
)
,reg_account AS
(
-- 普通用户的传奇记录
SELECT acc.gmid
,acc.appid
,acc.channel
,acc.user_id
,acc.device_type
,acc.event_time
,acc.ds
,'非盒子用户' AS user_flag --表示没有玩过盒子的普通传奇用户
,'0' AS sub_channel
FROM tmp_ods_newly_account acc
WHERE
EXISTS(
SELECT 1
FROM legend_apps app
WHERE app.appid = acc.appid
)
AND NOT
EXISTS(
SELECT 1
FROM box_users box
WHERE box.user_id = acc.user_id
)
UNION ALL -- 盒子用户玩过传奇的全量记录
SELECT acc.gmid
,acc.appid
,CASE WHEN bxchl.channel_desc IS NOT NULL THEN bxchl.channel_desc
ELSE acc.channel
END AS channel
,acc.user_id
,acc.device_type
,acc.event_time
,acc.ds
,'盒子用户' AS user_flag ---表示玩过盒子的用户
,bxchl.channel_desc AS sub_channel
FROM tmp_ods_newly_account acc
LEFT JOIN (
SELECT appid
,value AS channel
,ext AS channel_desc
FROM public.dws_app_props
WHERE appid = 1015
AND prop = 2 -- and length(ext)>0
) bxchl
ON acc.appid = bxchl.appid
AND acc.channel = bxchl.channel
WHERE
EXISTS(
SELECT 1
FROM box_users_with_legend b
WHERE b.user_id = acc.user_id
)
)
INSERT INTO
datasci.ads_996eco_index_box_m (index_type,data_month,is_box,reg_count)
SELECT 'reg' index_type
,'${month}' AS data_month
,CASE WHEN user_flag = '非盒子用户' THEN '非盒子注册用户'
WHEN user_flag = '盒子用户'
AND (appid = 1015
OR channel ~ '996box'
OR sub_channel IS NOT NULL) THEN '盒子注册用户'
ELSE '非盒子注册用户'
END AS is_box
,uniq(mi.user_id) AS reg_count
FROM reg_account acc
INNER JOIN (
SELECT user_id
,MIN(event_time) AS event_time_min
FROM reg_account
GROUP BY user_id
) mi ---从玩家的众多游戏记录中选取最早的一条
ON acc.user_id = mi.user_id
AND acc.event_time = mi.event_time_min
GROUP BY 1
,2
,3
;
INSERT INTO
datasci.ads_996eco_index_channel_m (index_type,data_month,re_channel,mau)
select
'mau' index_type,
'${month}' data_month,
case when channel~'盒子' or channel~'996box' then '盒子'
when channel~'ai6' then 'ai6'
when channel~'玩心' then '玩心'
when channel~'应用宝' then '腾讯应用宝'
when channel~'纸片' then '纸片'
when channel~'团团' then '团团'
when channel~'335玩' then '335玩'
when channel~'朋克' then '朋克'
when channel~'安徽追游' then '安徽追游'
when channel~'冰火' then '冰火'
when channel~'心乐' then '心乐'
when channel LIKE '%华为%' OR
channel LIKE '%vivo%' OR
channel LIKE '%OPPO%' OR
channel LIKE '%魅族%' OR
channel LIKE '%努比亚%' OR
channel LIKE '%联想%' OR
channel LIKE '%酷派%' then '硬核联盟'
when channel~'9377' then '9377'
when channel~'智灵' then '智灵'
when channel~'掌游' then '掌游'
when channel~'上士' then '上士'
when channel~'攒趣' then '攒趣'
when channel~'掌玩' then '掌玩'
when channel~'贪玩' then '贪玩'
when channel~'wx'or channel~'WX'or channel~'微信' then '微信'
when channel~'公众号' then '公众号'
when channel~'qq' or channel~'QQ' then 'QQ'
when channel~'quick' then 'quick'
when channel~'七牛' then '七牛'
when channel~'霸气' then '霸气'
when channel~'xy' or channel~'XY' then 'XY'
when channel~'芝麻互娱' then '芝麻互娱'
when channel~'龙翔' then '龙翔'
when channel~'布咕' then '布咕'
when channel~'小柠互娱' then '小柠互娱'
when channel~'春秋玩' then '春秋玩'
when channel~'欢喜时代' then '欢喜时代'
when channel~'上游' then '上游'
when channel~'倾程' then '倾程'
when channel~'绿洲' then '绿洲'
when channel~'雷电' then '雷电'
when channel~'点点' then '点点'
when channel~'小七' then '小七'
when channel~'瓜玩' then '瓜玩'
when channel~'艺云' then '艺云'
when channel~'冠游' then '冠游'
when channel~'玄藏' then '玄藏'
when channel~'羽龙' then '羽龙'
when channel~'星云' then '星云'
when channel~'爱尚游' then '爱尚游'
when channel~'昊玩' then '昊玩'
when channel~'8酷' then '8酷'
when channel~'迅玩' then '迅玩'
when channel~'星游' then '星游'
when channel~'小米' then '小米'
when channel~'趣城' then '趣城'
when channel~'诺游' then '诺游'
when channel~'洛谷' then '洛谷'
when channel~'司墨' then '司墨'
when channel~'脚印' then '脚印'
when channel~'神游' then '神游'
when channel~'拓乐' then '拓乐'
when channel~'360' then '360'
when channel~'日昇' then '日昇'
when channel~'触点' then '触点'
when channel~'冠游' then '冠游'
when channel~'巴兔' then '巴兔'
when channel~'天纵' then '天纵'
when channel~'早游戏' then '早游戏'
when channel~'爱趣' then '爱趣'
when channel~'星楠祥' then '星楠祥'
when channel~'贪游' then '贪游'
when channel~'君游' then '君游'
when channel~'996直播间' then '996直播间'
when channel~'mumu' then 'mumu'
when channel~'吉祥' then '吉祥直播间'
when channel~'溪谷' then '溪谷'
when channel~'优谷' then '优谷'
when channel~'闪趣' then '闪趣'
when channel~'8酷' then '8酷'
when channel~'抖音' then '抖音'
when channel~'斗鱼' then '斗鱼'
when channel~'虎牙' then '虎牙'
when channel~'巨量' then '巨量'
when channel~'快手' then '快手'
when channel~'爱奇艺' then '爱奇艺'
when channel~'007' then '007'
when channel~'圣宏' then '圣宏'
when channel~'顺火' then '顺火'
when channel~'飞火' then '飞火'
when channel~'乐岛' then '乐岛'
when channel~'传柒' then '传柒'
when channel~'星际' then '星际'
when channel~'玖趣' then '玖趣'
when lower(channel)~'ku25' then 'ku25'
when channel~'8090' then '8090'
when lower(channel)~'appstore' then 'AppStore'
when channel~'欢娱' then '欢娱'
when channel~'逐梦' then '逐梦'
when channel~'兴动' then '兴动'
when channel~'3733' then '3733'
when channel~'第一游戏' then '第一游戏'
when channel~'公会' then '公会'
when channel~'欢娱' then '欢娱'
when channel~'335玩' then '335玩'
when lower(channel)~'4yx' then '4yx'
when channel~'37' then '37'
when channel~'开心' then '开心'
when lower(channel)~ 'ios' or channel~'苹果' then 'ios苹果端具体不详'
when channel~'触点' then '触点'
when channel~'游码' then '游码'
when lower(channel)~'45yx' then '45yx'
when channel~'巨量' then '巨量'
when channel~'小铃铛' then '小铃铛'
when channel~'2345' then '2345'
when channel~'梨子' then '梨子'
when channel~'麦游' then '麦游'
when channel~'群英' then '群英'
when channel~'阅文' then '阅文'
when lower(channel)~'kopo' then 'kopo'
when channel~'创启' then '创启'
when channel~'4366' then '4366'
when channel~'大楚' then '大楚'
when channel~'巅峰' then '巅峰'
when channel~'277' then '277'
when channel~'112233' then '112233'
when channel~'714' then '714'
when channel~'4399' then '4399'
when channel~'追忆' then '追忆'
when lower(channel)~'yy' then 'yy'
when channel~'588' then '588'
when channel~'八门' then '八门'
when lower(channel)~'pdd' then 'pdd'
when channel~'9917' then '9917'
when channel~'51517' then '51517'
when lower(channel)~'4yx' then '4yx'
when channel~'好汉' then '好汉'
when channel~'51' then '51'
when channel~'葫芦侠' then '葫芦侠'
when channel~'虫虫' then '虫虫'
when channel~'跃游' then '跃游'
when channel~'天天' then '天天'
when channel~'66' then '66'
when channel~'嘉禾' then '嘉禾'
when channel~'爱游' then '爱游'
when channel~'乐疯玩' then '乐疯玩'
when channel~'游戏饭' then '游戏饭'
else '其他' end as re_channel,
uniq(user_id) as mau
from public.ods_active_account t1
inner join
(
select id,name,bind_game_id
from public.gm_apply
where bind_game_type=1
) t2 on t1.appid=t2.id
where t1.ds BETWEEN '${bizmonth}' AND '${bizdate}'
group by 1,2,3
;