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

120 lines
3.2 KiB
SQL

CREATE TABLE datasci.ads_996eco_index_device_m (
index_type text,
data_month text,
re_device_type text,
act_cnt bigint,
pay_cnt bigint,
pay_amount bigint,
mau bigint,
act_num bigint,
reg_count bigint,
);
DELETE FROM datasci.ads_996eco_index_device_m WHERE ds = '${month}';
-- 每月付费
WITH ga AS (
SELECT
id,
name
FROM public.gm_apply
WHERE bind_type = 1 AND bind_game_type = 1
)
,
aa AS (
SELECT
'${month}' data_month,
case when device_type ~*'h5' then 'H5'
when device_type ~*'pc' then 'PC'
when device_type ~*'ios' then 'IOS'
when device_type ~*'mac' then 'mac'
when device_type ~*'android' then 'Android'
when device_type ~*'harmony' then '鸿蒙'
else '其他' end AS re_device_type,
UNIQ(user_id) act_cnt
FROM
public.ods_active_account aa
INNER JOIN
ga ga ON aa.appid = ga.id
WHERE ds BETWEEN '${bizmonth}' AND '${bizdate}'
GROUP BY 1,2
),
po AS (
SELECT
'${month}' data_month,
case when device_type ~*'h5' then 'H5'
when device_type ~*'pc' then 'PC'
when device_type ~*'ios' then 'IOS'
when device_type ~*'mac' then 'mac'
when device_type ~*'android' then 'Android'
when device_type ~*'harmony' then '鸿蒙'
else '其他' end AS re_device_type,
UNIQ(po.user_id) pay_cnt,
SUM(po.amount) pay_amount
FROM
public.ods_payment_order po
INNER JOIN
ga ga ON po.appid = ga.id
WHERE ds BETWEEN '${bizmonth}' AND '${bizdate}'
GROUP BY 1,2
)
INSERT INTO
datasci.ads_996eco_index_device_m (index_type,data_month,re_device_type,act_cnt,pay_cnt,pay_amount)
SELECT
'pay' index_type,
t1.data_month AS data_month,
t1.re_device_type,
t1.act_cnt AS act_cnt,
t2.pay_cnt AS pay_cnt,
t2.pay_amount AS pay_amount
FROM aa t1
LEFT JOIN
po t2 ON t1.data_month = t2.data_month and t1.re_device_type = t2.re_device_type
;
INSERT INTO
datasci.ads_996eco_index_device_m (index_type,data_month,re_device_type,mau)
select
'mau' index_type,
'${month}' data_month,
case when lower(t1.device_type)~'h5' then 'H5'
when lower(t1.device_type)~'pc' then 'PC'
when lower(t1.device_type)~'ios' then 'IOS'
else t1.device_type end as re_device_type,
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
;
INSERT INTO
datasci.ads_996eco_index_device_m (index_type,data_month,re_device_type,mau,device_type)
select
'device-type-mau' index_type,
'${month}' data_month,
case when lower(t1.device_type)~'h5' then 'H5'
when lower(t1.device_type)~'pc' then 'PC'
when lower(t1.device_type)~'ios' then 'IOS'
else t1.device_type end as re_device_type,
uniq(user_id) as mau,
t1.device_type
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,5
;