|
@@ -2393,6 +2393,9 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
TIMESTAMPDIFF(DAY, DATE(MIN(merge_time)), DATE_ADD(Date(NOW()),1)) start_day, -- 开服天数
|
|
|
MAX(sum_server_count) as sum_server_count, -- 合服次数
|
|
|
IFNULL(MAX(h.is_merge), 0) as is_merge, -- 是否参与过合服
|
|
|
+ IFNULL(MIN(b.min_server_start_time), MIN(merge_time)) as min_server_start_time, -- 最小原始子服开服时间
|
|
|
+ IFNULL(TIMESTAMPDIFF(DAY, DATE(MIN(b.min_server_start_time)), DATE_ADD(Date(NOW()),1)),
|
|
|
+ TIMESTAMPDIFF(DAY, DATE(MIN(merge_time)), DATE_ADD(Date(NOW()),1))) as min_server_start_days, -- 最小原始子服开服距今天数
|
|
|
MAX(b.main_server_id) as main_server_id, -- 主服ID
|
|
|
MAX(b.main_server_name) as main_server_name, -- 主服名
|
|
|
MAX(son_server_ids) as son_server_ids, -- 合服ID列表
|
|
@@ -2429,7 +2432,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
MAX(server_name) as server_name, -- 区服名
|
|
|
boss_server_id, -- 合服ID
|
|
|
MAX(boss_server_name) as boss_server_name, -- 合服名
|
|
|
- MAX(merge_time) as merge_time , -- 合服时间
|
|
|
+ MIN(merge_time) as merge_time , -- 合服时间
|
|
|
MAX(sum_server_count) as sum_server_count, -- 合服次数
|
|
|
SUM(server_combat_num) as server_combat_num, -- 区服战力
|
|
|
SUM(total_amount) as total_amount, -- 总付费金额
|
|
@@ -2501,7 +2504,8 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
MAX(a.son_server_ids) as son_server_ids , -- 合服子服ID列表
|
|
|
MAX(d.son_server_ids_name) as son_server_ids_name , -- 合服子服ID列表
|
|
|
GROUP_CONCAT(a.source_server_ids, ',') as source_server_ids, -- 原始子服ID列表
|
|
|
- GROUP_CONCAT(b.server_name , ',') as source_server_ids_name -- 原始子服名
|
|
|
+ GROUP_CONCAT(b.server_name , ',') as source_server_ids_name, -- 原始子服名
|
|
|
+ MIN(e.start_time) as min_server_start_time -- 最小原始子服开服时间
|
|
|
FROM dm_game_order.t_game_server_merge a
|
|
|
LEFT JOIN dm_game_order.t_game_server_merge b on a.source_system = b.source_system AND a.game_id = b.game_id AND a.source_server_ids = b.server_id
|
|
|
LEFT JOIN (
|
|
@@ -2531,6 +2535,7 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
) b on a.source_system = b.source_system AND a.game_id = b.game_id AND a.son_server_ids = b.server_id
|
|
|
GROUP BY a.source_system , a.game_id, a.server_id
|
|
|
) d on a.source_system = d.source_system AND a.game_id = d.game_id AND a.server_id = d.server_id
|
|
|
+ LEFT JOIN dm_game_order.t_game_server_merge e on a.source_system = e.source_system AND a.source_server_ids = e.server_id AND a.game_id = e.game_id
|
|
|
group by a.server_id , a.source_system , a.game_id
|
|
|
) b ON a.source_system = b.b_source_system AND a.super_game_id = b.b_game_id AND a.boss_server_id = b.b_server_id
|
|
|
LEFT JOIN (
|
|
@@ -2678,283 +2683,288 @@ public class RoleManageServiceImpl implements IRoleManageService {
|
|
|
FROM
|
|
|
(
|
|
|
SELECT
|
|
|
- -- 查询每个超父游戏-合服维度的信息
|
|
|
- source_system,
|
|
|
- super_game_id , -- 超父游戏ID
|
|
|
- MAX(super_game_name) as super_game_name , -- 超父游戏名
|
|
|
- boss_server_id as server_id, -- 合服ID
|
|
|
- IFNULL(MAX(h.server_name), MAX(a.boss_server_name)) as server_name, -- 合服名
|
|
|
- MIN(merge_time) as dt, -- 合服时间
|
|
|
- TIMESTAMPDIFF(DAY, DATE(MIN(merge_time)), DATE_ADD(Date(NOW()),1)) start_day, -- 开服天数
|
|
|
- MAX(sum_server_count) as sum_server_count, -- 合服次数
|
|
|
- IFNULL(MAX(h.is_merge), 0) as is_merge, -- 是否参与过合服
|
|
|
- MAX(b.main_server_id) as main_server_id, -- 主服ID
|
|
|
- MAX(b.main_server_name) as main_server_name, -- 主服名
|
|
|
- MAX(son_server_ids) as son_server_ids, -- 合服ID列表
|
|
|
- MAX(son_server_ids_name) as son_server_ids_name, -- 合服ID列表
|
|
|
- MAX(source_server_ids) as source_server_ids, -- 原始子服ID列表
|
|
|
- MAX(source_server_ids_name) as source_server_ids_name, -- 原始子服名列表
|
|
|
- MAX(server_combat_num) as server_combat_num, -- 区服战力
|
|
|
- MAX(d.new_user_count) as new_user_count, -- 新用户人数
|
|
|
- MAX(e.create_role_count) as create_role_count, -- 创角人数
|
|
|
- MAX(c.role_count) as role_count, -- 角色数量
|
|
|
- MAX(f.total_num) as total_num, -- 总付费人数
|
|
|
- MAX(total_amount) as total_amount, -- 总付费金额
|
|
|
- ROUND(IF(MAX(f.total_num) > 0, MAX(total_amount) / MAX(f.total_num), 0), 2) as total_arppu, -- 总付费ARPPU
|
|
|
- ROUND(IF(MAX(e.create_role_count) > 0, MAX(f.total_num) / MAX(e.create_role_count), 0), 4) as amount_rate, -- 付费率
|
|
|
- MAX(ba1) as ba1, -- 今日付费金额
|
|
|
- MAX(f.ba1_num) as ba1_num, -- 今日付费人数
|
|
|
- MAX(ba1_count) as ba1_count, -- 今日付费次数
|
|
|
- MAX(g.ba1_active_num) as ba1_active_num, -- 今日活跃人数
|
|
|
- MAX(ba2) as ba2, -- 昨日付费金额
|
|
|
- MAX(f.ba2_num) as ba2_num, -- 昨日付费人数
|
|
|
- MAX(ba2_count) as ba2_count, -- 昨日付费次数
|
|
|
- MAX(g.ba2_active_num) as ba2_active_num, -- 昨日活跃人数
|
|
|
- MAX(ba3) as ba3, -- 前天付费金额
|
|
|
- MAX(f.ba3_num) as ba3_num, -- 前天付费人数
|
|
|
- MAX(ba3_count) as ba3_count, -- 前天付费次数
|
|
|
- MAX(g.ba3_active_num) as ba3_active_num -- 前天活跃人数
|
|
|
- FROM (
|
|
|
- SELECT
|
|
|
- -- 子查询,查询每个超父游戏-原始区服维度的信息
|
|
|
- source_system,
|
|
|
- super_game_id , -- 超父游戏ID
|
|
|
- MAX(super_game_name) as super_game_name , -- 超父游戏名
|
|
|
- -- server_id, -- 区服ID
|
|
|
- MAX(server_name) as server_name, -- 区服名
|
|
|
- boss_server_id, -- 合服ID
|
|
|
- MAX(boss_server_name) as boss_server_name, -- 合服名
|
|
|
- MIN(merge_time) as merge_time , -- 合服时间
|
|
|
- MAX(sum_server_count) as sum_server_count, -- 合服次数
|
|
|
- SUM(server_combat_num) as server_combat_num, -- 区服战力
|
|
|
- SUM(total_amount) as total_amount, -- 总付费金额
|
|
|
- SUM(ba1) as ba1, -- 今日付费金额
|
|
|
- SUM(ba1_count) as ba1_count, -- 今日付费次数
|
|
|
- SUM(ba2) as ba2, -- 昨日付费金额
|
|
|
- SUM(ba2_count) as ba2_count, -- 昨日付费次数
|
|
|
- SUM(ba3) as ba3, -- 前天付费金额
|
|
|
- SUM(ba3_count) as ba3_count -- 前天付费次数
|
|
|
- FROM (
|
|
|
- SELECT
|
|
|
- -- 子查询,查询每个父游戏-区服维度的信息
|
|
|
- source_system,
|
|
|
- parent_game_id, -- 父游戏ID
|
|
|
- MAX(parent_game_name) as parent_game_name, -- 父游戏名
|
|
|
- super_game_id , -- 超父游戏ID
|
|
|
- MAX(super_game_name) as super_game_name , -- 超父游戏名
|
|
|
- server_id, -- 区服ID
|
|
|
- MAX(server_name) as server_name, -- 区服名
|
|
|
- boss_server_id, -- 合服ID
|
|
|
- MAX(boss_server_name) as boss_server_name, -- 合服名
|
|
|
- MIN(merge_time) as merge_time , -- 合服时间
|
|
|
- MAX(sum_server_count) as sum_server_count, -- 合服次数
|
|
|
- SUM(server_combat_num) as server_combat_num, -- 区服战力
|
|
|
- SUM(total_amount) as total_amount, -- 总付费金额
|
|
|
- SUM(ba1) as ba1, -- 今日付费金额
|
|
|
- SUM(ba1_count) as ba1_count, -- 今日付费次数
|
|
|
- SUM(ba2) as ba2, -- 昨日付费金额
|
|
|
- SUM(ba2_count) as ba2_count, -- 昨日付费次数
|
|
|
- SUM(ba3) as ba3, -- 前天付费金额
|
|
|
- SUM(ba3_count) as ba3_count -- 前天付费次数
|
|
|
- FROM (
|
|
|
- -- 子查询,查询每个子游戏-原始区服维度的信息
|
|
|
- SELECT
|
|
|
- source_system,
|
|
|
- game_id, -- 子游戏ID
|
|
|
- MAX(game_name) as game_name, -- 子游戏名
|
|
|
- parent_game_id, -- 父游戏ID
|
|
|
- MAX(parent_game_name) as parent_game_name, -- 父游戏名
|
|
|
- super_game_id , -- 超父游戏ID
|
|
|
- MAX(super_game_name) as super_game_name , -- 超父游戏名
|
|
|
- server_id, -- 区服ID
|
|
|
- MAX(server_name) as server_name, -- 区服名
|
|
|
- boss_server_id, -- 合服ID
|
|
|
- MAX(boss_server_name) as boss_server_name, -- 合服名
|
|
|
- MIN(merge_time) as merge_time , -- 合服时间
|
|
|
- MAX(sum_server_count) as sum_server_count, -- 合服次数
|
|
|
- MAX(server_combat_num) as server_combat_num, -- 区服战力
|
|
|
- MAX(total_amount) as total_amount, -- 总付费金额
|
|
|
- MAX(ba1) as ba1, -- 今日付费金额
|
|
|
- MAX(ba1_count) as ba1_count, -- 今日付费次数
|
|
|
- MAX(ba2) as ba2, -- 昨日付费金额
|
|
|
- MAX(ba2_count) as ba2_count, -- 昨日付费次数
|
|
|
- MAX(ba3) as ba3, -- 前天付费金额
|
|
|
- MAX(ba3_count) as ba3_count -- 前天付费次数
|
|
|
- FROM game_ads.ads_role_combat_num_ranking
|
|
|
- GROUP BY game_id ,parent_game_id ,super_game_id ,server_id ,boss_server_id ,source_system
|
|
|
- ) a GROUP BY parent_game_id ,super_game_id ,server_id ,boss_server_id ,source_system
|
|
|
- ) a GROUP BY super_game_id ,boss_server_id ,source_system
|
|
|
- ) a
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- a.source_system as b_source_system,
|
|
|
- a.server_id as b_server_id,
|
|
|
- a.game_id as b_game_id,
|
|
|
- MAX(a.server_name) as server_name,
|
|
|
- MAX(a.main_server_id) as main_server_id, -- 主服ID
|
|
|
- MAX(c.server_name) as main_server_name, -- 主服名
|
|
|
- MAX(a.son_server_ids) as son_server_ids , -- 合服子服ID列表
|
|
|
- MAX(d.son_server_ids_name) as son_server_ids_name , -- 合服子服ID列表
|
|
|
- GROUP_CONCAT(a.source_server_ids, ',') as source_server_ids, -- 原始子服ID列表
|
|
|
- GROUP_CONCAT(b.server_name , ',') as source_server_ids_name -- 原始子服名
|
|
|
- FROM dm_game_order.t_game_server_merge a
|
|
|
- LEFT JOIN dm_game_order.t_game_server_merge b on a.source_system = b.source_system AND a.game_id = b.game_id AND a.source_server_ids = b.server_id
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- source_system ,
|
|
|
- game_id ,
|
|
|
- server_id ,
|
|
|
- MAX(server_name) as server_name
|
|
|
- FROM dm_game_order.t_game_server_merge
|
|
|
- GROUP BY server_id ,source_system ,game_id
|
|
|
- ) c on a.source_system = c.source_system AND a.game_id = c.game_id AND a.main_server_id = c.server_id
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- a.source_system ,
|
|
|
- a.game_id,
|
|
|
- a.server_id,
|
|
|
- GROUP_CONCAT(b.server_name , ',') as son_server_ids_name -- 合服列表名
|
|
|
- FROM dm_game_order.t_game_server_son_merge a
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- source_system ,
|
|
|
- game_id ,
|
|
|
- server_id ,
|
|
|
- MAX(server_name) as server_name
|
|
|
- FROM dm_game_order.t_game_server_merge
|
|
|
- GROUP BY server_id ,source_system ,game_id
|
|
|
- ) b on a.source_system = b.source_system AND a.game_id = b.game_id AND a.son_server_ids = b.server_id
|
|
|
- GROUP BY a.source_system , a.game_id, a.server_id
|
|
|
- ) d on a.source_system = d.source_system AND a.game_id = d.game_id AND a.server_id = d.server_id
|
|
|
- group by a.server_id , a.source_system , a.game_id
|
|
|
- ) b ON a.source_system = b.b_source_system AND a.super_game_id = b.b_game_id AND a.boss_server_id = b.b_server_id
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- -- 超父-合服维度
|
|
|
- source_system as c_source_system,
|
|
|
- super_game_id as c_super_game_id,
|
|
|
- boss_server_id as c_boss_server_id,
|
|
|
- COUNT(DISTINCT role_id) as role_count -- 角色数量
|
|
|
- FROM game_ads.ads_role_combat_num_ranking
|
|
|
- GROUP BY super_game_id, source_system, boss_server_id
|
|
|
- ) c on a.source_system = c.c_source_system AND a.super_game_id = c.c_super_game_id AND a.boss_server_id = c.c_boss_server_id
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- -- 超父-合服维度
|
|
|
- a.source_system as d_source_system,
|
|
|
- a.super_game_id as d_super_game_id,
|
|
|
- b.boss_server_id as d_boss_server_id,
|
|
|
- COUNT(a.association_user_id) as new_user_count -- 新用户人数
|
|
|
- FROM (
|
|
|
- SELECT
|
|
|
- a.source_system ,
|
|
|
- b.id,
|
|
|
- a.game_id ,
|
|
|
- a.server_id,
|
|
|
- a.role_id ,
|
|
|
- a.role_name ,
|
|
|
- b.association_user_id ,
|
|
|
- a.create_time ,
|
|
|
- IFNULL(c.super_game_id , a.game_id) as super_game_id,
|
|
|
- ROW_NUMBER()over(partition by b.association_user_id , a.source_system order by a.create_time asc, a.user_id asc) as num
|
|
|
- FROM dm_game_order.t_game_user_role a
|
|
|
- LEFT JOIN dm_game_order.t_game_user b on a.source_system = b.source_system AND a.user_id = b.id
|
|
|
- LEFT JOIN dm_game_order.t_game c on a.source_system = c.source_system AND a.game_id = c.id
|
|
|
- ) a
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- source_system,
|
|
|
- server_id,
|
|
|
- boss_server_id,
|
|
|
- super_game_id
|
|
|
- FROM game_ads.ads_role_combat_num_ranking
|
|
|
- GROUP BY source_system, super_game_id, server_id, boss_server_id
|
|
|
- ) b on a.source_system = b.source_system AND a.server_id = b.server_id AND a.super_game_id = b.super_game_id
|
|
|
- WHERE num = 1
|
|
|
- GROUP BY a.super_game_id, b.boss_server_id, a.source_system
|
|
|
- ) d on a.source_system = d.d_source_system AND a.super_game_id = d.d_super_game_id AND a.boss_server_id = d.d_boss_server_id
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- -- 超父-合服维度
|
|
|
- source_system as e_source_system,
|
|
|
- super_game_id as e_super_game_id,
|
|
|
- boss_server_id as e_boss_server_id,
|
|
|
- COUNT(DISTINCT user_id) as create_role_count -- 创角人数
|
|
|
- FROM game_ads.ads_role_combat_num_ranking
|
|
|
- GROUP BY super_game_id, source_system, boss_server_id
|
|
|
- ) e on a.source_system = e.e_source_system AND a.super_game_id = e.e_super_game_id AND a.boss_server_id = e.e_boss_server_id
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- -- 超父-合服维度
|
|
|
- a.source_system as f_source_system,
|
|
|
- c.super_game_id as f_super_game_id,
|
|
|
- d.boss_server_id as f_boss_server_id,
|
|
|
- count(DISTINCT IF(Date(NOW()) = day,user_id,NULL)) as ba1_num, -- 今日充值人数
|
|
|
- count(DISTINCT IF(date_add(Date(NOW()),-1)=day,user_id,NULL)) as ba2_num, -- 昨日充值人数
|
|
|
- count(DISTINCT IF(date_add(Date(NOW()),-2)=day,user_id,NULL)) as ba3_num, -- 前天充值人数
|
|
|
- count(DISTINCT user_id) as total_num -- 总充值人数
|
|
|
- FROM dm_game_order.t_game_server a
|
|
|
- LEFT JOIN game_dw.dw_order_day_amount b
|
|
|
- on a.source_system = b.source_system and a.server_id =b.server_id and a.game_id =b.game_id
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- source_system ,
|
|
|
- id,
|
|
|
- IFNULL(parent_id, id) as parent_id,
|
|
|
- IFNULL(super_game_id, id) as super_game_id
|
|
|
- FROM dm_game_order.t_game
|
|
|
- ) c on a.source_system = c.source_system AND a.game_id = c.id
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- source_system,
|
|
|
- server_id,
|
|
|
- boss_server_id,
|
|
|
- super_game_id
|
|
|
- FROM game_ads.ads_role_combat_num_ranking
|
|
|
- GROUP BY source_system, super_game_id, server_id, boss_server_id
|
|
|
- ) d on a.source_system = d.source_system AND a.server_id = d.server_id AND c.super_game_id = d.super_game_id
|
|
|
- group by a.source_system ,d.boss_server_id, c.super_game_id
|
|
|
- ) f on a.source_system = f.f_source_system AND a.super_game_id = f.f_super_game_id AND a.boss_server_id = f.f_boss_server_id
|
|
|
- LEFT JOIN (
|
|
|
- select
|
|
|
- -- 超父-合服维度
|
|
|
- a.source_system as g_source_system,
|
|
|
- d.boss_server_id as g_boss_server_id,
|
|
|
- c.super_game_id as g_super_game_id,
|
|
|
- count(distinct IF(Date(NOW()) = dt,user_id,NULL)) as ba1_active_num, -- 今日活跃人数
|
|
|
- count(distinct IF(date_add(Date(NOW()),-1)=dt,user_id,NULL)) as ba2_active_num, -- 昨日活跃人数
|
|
|
- count(distinct IF(date_add(Date(NOW()),-2)=dt,user_id,NULL)) as ba3_active_num -- 前日活跃人数
|
|
|
- from dm_game_order.t_game_server a
|
|
|
- left join game_dw.dw_active_log b on a.source_system = b.source_system and a.server_id = b.server_id and a.game_id = b.game_id
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- source_system ,
|
|
|
- id,
|
|
|
- IFNULL(parent_id, id) as parent_id,
|
|
|
- IFNULL(super_game_id, id) as super_game_id
|
|
|
- FROM dm_game_order.t_game
|
|
|
- ) c on a.source_system = c.source_system AND a.game_id = c.id
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- source_system,
|
|
|
- server_id,
|
|
|
- boss_server_id,
|
|
|
- super_game_id
|
|
|
- FROM game_ads.ads_role_combat_num_ranking
|
|
|
- GROUP BY source_system, super_game_id, server_id, boss_server_id
|
|
|
- ) d on a.source_system = d.source_system AND a.server_id = d.server_id AND c.super_game_id = d.super_game_id
|
|
|
- group by a.source_system ,d.boss_server_id, c.super_game_id
|
|
|
- ) g on a.source_system = g.g_source_system AND a.super_game_id = g.g_super_game_id AND a.boss_server_id = g.g_boss_server_id
|
|
|
- LEFT JOIN (
|
|
|
- SELECT
|
|
|
- source_system as h_source_system,
|
|
|
- game_id,
|
|
|
- server_id,
|
|
|
- server_name,
|
|
|
- is_merge -- 是否参与过合服
|
|
|
- FROM dm_game_order.t_game_server_merge
|
|
|
- ) h on a.source_system = h.h_source_system AND a.boss_server_id = h.server_id AND a.super_game_id = h.game_id
|
|
|
- GROUP BY source_system,boss_server_id,super_game_id
|
|
|
+ -- 查询每个超父游戏-合服维度的信息
|
|
|
+ source_system,
|
|
|
+ super_game_id , -- 超父游戏ID
|
|
|
+ MAX(super_game_name) as super_game_name , -- 超父游戏名
|
|
|
+ boss_server_id as server_id, -- 合服ID
|
|
|
+ IFNULL(MAX(h.server_name), MAX(a.boss_server_name)) as server_name, -- 合服名
|
|
|
+ MIN(merge_time) as dt, -- 合服时间
|
|
|
+ TIMESTAMPDIFF(DAY, DATE(MIN(merge_time)), DATE_ADD(Date(NOW()),1)) start_day, -- 开服天数
|
|
|
+ MAX(sum_server_count) as sum_server_count, -- 合服次数
|
|
|
+ IFNULL(MAX(h.is_merge), 0) as is_merge, -- 是否参与过合服
|
|
|
+ IFNULL(MIN(b.min_server_start_time), MIN(merge_time)) as min_server_start_time, -- 最小原始子服开服时间
|
|
|
+ IFNULL(TIMESTAMPDIFF(DAY, DATE(MIN(b.min_server_start_time)), DATE_ADD(Date(NOW()),1)),
|
|
|
+ TIMESTAMPDIFF(DAY, DATE(MIN(merge_time)), DATE_ADD(Date(NOW()),1))) as min_server_start_days, -- 最小原始子服开服距今天数
|
|
|
+ MAX(b.main_server_id) as main_server_id, -- 主服ID
|
|
|
+ MAX(b.main_server_name) as main_server_name, -- 主服名
|
|
|
+ MAX(son_server_ids) as son_server_ids, -- 合服ID列表
|
|
|
+ MAX(son_server_ids_name) as son_server_ids_name, -- 合服ID列表
|
|
|
+ MAX(source_server_ids) as source_server_ids, -- 原始子服ID列表
|
|
|
+ MAX(source_server_ids_name) as source_server_ids_name, -- 原始子服名列表
|
|
|
+ MAX(server_combat_num) as server_combat_num, -- 区服战力
|
|
|
+ MAX(d.new_user_count) as new_user_count, -- 新用户人数
|
|
|
+ MAX(e.create_role_count) as create_role_count, -- 创角人数
|
|
|
+ MAX(c.role_count) as role_count, -- 角色数量
|
|
|
+ MAX(f.total_num) as total_num, -- 总付费人数
|
|
|
+ MAX(total_amount) as total_amount, -- 总付费金额
|
|
|
+ ROUND(IF(MAX(f.total_num) > 0, MAX(total_amount) / MAX(f.total_num), 0), 2) as total_arppu, -- 总付费ARPPU
|
|
|
+ ROUND(IF(MAX(e.create_role_count) > 0, MAX(f.total_num) / MAX(e.create_role_count), 0), 4) as amount_rate, -- 付费率
|
|
|
+ MAX(ba1) as ba1, -- 今日付费金额
|
|
|
+ MAX(f.ba1_num) as ba1_num, -- 今日付费人数
|
|
|
+ MAX(ba1_count) as ba1_count, -- 今日付费次数
|
|
|
+ MAX(g.ba1_active_num) as ba1_active_num, -- 今日活跃人数
|
|
|
+ MAX(ba2) as ba2, -- 昨日付费金额
|
|
|
+ MAX(f.ba2_num) as ba2_num, -- 昨日付费人数
|
|
|
+ MAX(ba2_count) as ba2_count, -- 昨日付费次数
|
|
|
+ MAX(g.ba2_active_num) as ba2_active_num, -- 昨日活跃人数
|
|
|
+ MAX(ba3) as ba3, -- 前天付费金额
|
|
|
+ MAX(f.ba3_num) as ba3_num, -- 前天付费人数
|
|
|
+ MAX(ba3_count) as ba3_count, -- 前天付费次数
|
|
|
+ MAX(g.ba3_active_num) as ba3_active_num -- 前天活跃人数
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ -- 子查询,查询每个超父游戏-原始区服维度的信息
|
|
|
+ source_system,
|
|
|
+ super_game_id , -- 超父游戏ID
|
|
|
+ MAX(super_game_name) as super_game_name , -- 超父游戏名
|
|
|
+ -- server_id, -- 区服ID
|
|
|
+ MAX(server_name) as server_name, -- 区服名
|
|
|
+ boss_server_id, -- 合服ID
|
|
|
+ MAX(boss_server_name) as boss_server_name, -- 合服名
|
|
|
+ MIN(merge_time) as merge_time , -- 合服时间
|
|
|
+ MAX(sum_server_count) as sum_server_count, -- 合服次数
|
|
|
+ SUM(server_combat_num) as server_combat_num, -- 区服战力
|
|
|
+ SUM(total_amount) as total_amount, -- 总付费金额
|
|
|
+ SUM(ba1) as ba1, -- 今日付费金额
|
|
|
+ SUM(ba1_count) as ba1_count, -- 今日付费次数
|
|
|
+ SUM(ba2) as ba2, -- 昨日付费金额
|
|
|
+ SUM(ba2_count) as ba2_count, -- 昨日付费次数
|
|
|
+ SUM(ba3) as ba3, -- 前天付费金额
|
|
|
+ SUM(ba3_count) as ba3_count -- 前天付费次数
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ -- 子查询,查询每个父游戏-区服维度的信息
|
|
|
+ source_system,
|
|
|
+ parent_game_id, -- 父游戏ID
|
|
|
+ MAX(parent_game_name) as parent_game_name, -- 父游戏名
|
|
|
+ super_game_id , -- 超父游戏ID
|
|
|
+ MAX(super_game_name) as super_game_name , -- 超父游戏名
|
|
|
+ server_id, -- 区服ID
|
|
|
+ MAX(server_name) as server_name, -- 区服名
|
|
|
+ boss_server_id, -- 合服ID
|
|
|
+ MAX(boss_server_name) as boss_server_name, -- 合服名
|
|
|
+ MIN(merge_time) as merge_time , -- 合服时间
|
|
|
+ MAX(sum_server_count) as sum_server_count, -- 合服次数
|
|
|
+ SUM(server_combat_num) as server_combat_num, -- 区服战力
|
|
|
+ SUM(total_amount) as total_amount, -- 总付费金额
|
|
|
+ SUM(ba1) as ba1, -- 今日付费金额
|
|
|
+ SUM(ba1_count) as ba1_count, -- 今日付费次数
|
|
|
+ SUM(ba2) as ba2, -- 昨日付费金额
|
|
|
+ SUM(ba2_count) as ba2_count, -- 昨日付费次数
|
|
|
+ SUM(ba3) as ba3, -- 前天付费金额
|
|
|
+ SUM(ba3_count) as ba3_count -- 前天付费次数
|
|
|
+ FROM (
|
|
|
+ -- 子查询,查询每个子游戏-原始区服维度的信息
|
|
|
+ SELECT
|
|
|
+ source_system,
|
|
|
+ game_id, -- 子游戏ID
|
|
|
+ MAX(game_name) as game_name, -- 子游戏名
|
|
|
+ parent_game_id, -- 父游戏ID
|
|
|
+ MAX(parent_game_name) as parent_game_name, -- 父游戏名
|
|
|
+ super_game_id , -- 超父游戏ID
|
|
|
+ MAX(super_game_name) as super_game_name , -- 超父游戏名
|
|
|
+ server_id, -- 区服ID
|
|
|
+ MAX(server_name) as server_name, -- 区服名
|
|
|
+ boss_server_id, -- 合服ID
|
|
|
+ MAX(boss_server_name) as boss_server_name, -- 合服名
|
|
|
+ MIN(merge_time) as merge_time , -- 合服时间
|
|
|
+ MAX(sum_server_count) as sum_server_count, -- 合服次数
|
|
|
+ MAX(server_combat_num) as server_combat_num, -- 区服战力
|
|
|
+ MAX(total_amount) as total_amount, -- 总付费金额
|
|
|
+ MAX(ba1) as ba1, -- 今日付费金额
|
|
|
+ MAX(ba1_count) as ba1_count, -- 今日付费次数
|
|
|
+ MAX(ba2) as ba2, -- 昨日付费金额
|
|
|
+ MAX(ba2_count) as ba2_count, -- 昨日付费次数
|
|
|
+ MAX(ba3) as ba3, -- 前天付费金额
|
|
|
+ MAX(ba3_count) as ba3_count -- 前天付费次数
|
|
|
+ FROM game_ads.ads_role_combat_num_ranking
|
|
|
+ GROUP BY game_id ,parent_game_id ,super_game_id ,server_id ,boss_server_id ,source_system
|
|
|
+ ) a GROUP BY parent_game_id ,super_game_id ,server_id ,boss_server_id ,source_system
|
|
|
+ ) a GROUP BY super_game_id ,boss_server_id ,source_system
|
|
|
+ ) a
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ a.source_system as b_source_system,
|
|
|
+ a.server_id as b_server_id,
|
|
|
+ a.game_id as b_game_id,
|
|
|
+ MAX(a.server_name) as server_name,
|
|
|
+ MAX(a.main_server_id) as main_server_id, -- 主服ID
|
|
|
+ MAX(c.server_name) as main_server_name, -- 主服名
|
|
|
+ MAX(a.son_server_ids) as son_server_ids , -- 合服子服ID列表
|
|
|
+ MAX(d.son_server_ids_name) as son_server_ids_name , -- 合服子服ID列表
|
|
|
+ GROUP_CONCAT(a.source_server_ids, ',') as source_server_ids, -- 原始子服ID列表
|
|
|
+ GROUP_CONCAT(b.server_name , ',') as source_server_ids_name, -- 原始子服名
|
|
|
+ MIN(e.start_time) as min_server_start_time -- 最小原始子服开服时间
|
|
|
+ FROM dm_game_order.t_game_server_merge a
|
|
|
+ LEFT JOIN dm_game_order.t_game_server_merge b on a.source_system = b.source_system AND a.game_id = b.game_id AND a.source_server_ids = b.server_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system ,
|
|
|
+ game_id ,
|
|
|
+ server_id ,
|
|
|
+ MAX(server_name) as server_name
|
|
|
+ FROM dm_game_order.t_game_server_merge
|
|
|
+ GROUP BY server_id ,source_system ,game_id
|
|
|
+ ) c on a.source_system = c.source_system AND a.game_id = c.game_id AND a.main_server_id = c.server_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ a.source_system ,
|
|
|
+ a.game_id,
|
|
|
+ a.server_id,
|
|
|
+ GROUP_CONCAT(b.server_name , ',') as son_server_ids_name -- 合服列表名
|
|
|
+ FROM dm_game_order.t_game_server_son_merge a
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system ,
|
|
|
+ game_id ,
|
|
|
+ server_id ,
|
|
|
+ MAX(server_name) as server_name
|
|
|
+ FROM dm_game_order.t_game_server_merge
|
|
|
+ GROUP BY server_id ,source_system ,game_id
|
|
|
+ ) b on a.source_system = b.source_system AND a.game_id = b.game_id AND a.son_server_ids = b.server_id
|
|
|
+ GROUP BY a.source_system , a.game_id, a.server_id
|
|
|
+ ) d on a.source_system = d.source_system AND a.game_id = d.game_id AND a.server_id = d.server_id
|
|
|
+ LEFT JOIN dm_game_order.t_game_server_merge e on a.source_system = e.source_system AND a.source_server_ids = e.server_id AND a.game_id = e.game_id
|
|
|
+ group by a.server_id , a.source_system , a.game_id
|
|
|
+ ) b ON a.source_system = b.b_source_system AND a.super_game_id = b.b_game_id AND a.boss_server_id = b.b_server_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ -- 超父-合服维度
|
|
|
+ source_system as c_source_system,
|
|
|
+ super_game_id as c_super_game_id,
|
|
|
+ boss_server_id as c_boss_server_id,
|
|
|
+ COUNT(DISTINCT role_id) as role_count -- 角色数量
|
|
|
+ FROM game_ads.ads_role_combat_num_ranking
|
|
|
+ GROUP BY super_game_id, source_system, boss_server_id
|
|
|
+ ) c on a.source_system = c.c_source_system AND a.super_game_id = c.c_super_game_id AND a.boss_server_id = c.c_boss_server_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ -- 超父-合服维度
|
|
|
+ a.source_system as d_source_system,
|
|
|
+ a.super_game_id as d_super_game_id,
|
|
|
+ b.boss_server_id as d_boss_server_id,
|
|
|
+ COUNT(a.association_user_id) as new_user_count -- 新用户人数
|
|
|
+ FROM (
|
|
|
+ SELECT
|
|
|
+ a.source_system ,
|
|
|
+ b.id,
|
|
|
+ a.game_id ,
|
|
|
+ a.server_id,
|
|
|
+ a.role_id ,
|
|
|
+ a.role_name ,
|
|
|
+ b.association_user_id ,
|
|
|
+ a.create_time ,
|
|
|
+ IFNULL(c.super_game_id , a.game_id) as super_game_id,
|
|
|
+ ROW_NUMBER()over(partition by b.association_user_id , a.source_system order by a.create_time asc, a.user_id asc) as num
|
|
|
+ FROM dm_game_order.t_game_user_role a
|
|
|
+ LEFT JOIN dm_game_order.t_game_user b on a.source_system = b.source_system AND a.user_id = b.id
|
|
|
+ LEFT JOIN dm_game_order.t_game c on a.source_system = c.source_system AND a.game_id = c.id
|
|
|
+ ) a
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system,
|
|
|
+ server_id,
|
|
|
+ boss_server_id,
|
|
|
+ super_game_id
|
|
|
+ FROM game_ads.ads_role_combat_num_ranking
|
|
|
+ GROUP BY source_system, super_game_id, server_id, boss_server_id
|
|
|
+ ) b on a.source_system = b.source_system AND a.server_id = b.server_id AND a.super_game_id = b.super_game_id
|
|
|
+ WHERE num = 1
|
|
|
+ GROUP BY a.super_game_id, b.boss_server_id, a.source_system
|
|
|
+ ) d on a.source_system = d.d_source_system AND a.super_game_id = d.d_super_game_id AND a.boss_server_id = d.d_boss_server_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ -- 超父-合服维度
|
|
|
+ source_system as e_source_system,
|
|
|
+ super_game_id as e_super_game_id,
|
|
|
+ boss_server_id as e_boss_server_id,
|
|
|
+ COUNT(DISTINCT user_id) as create_role_count -- 创角人数
|
|
|
+ FROM game_ads.ads_role_combat_num_ranking
|
|
|
+ GROUP BY super_game_id, source_system, boss_server_id
|
|
|
+ ) e on a.source_system = e.e_source_system AND a.super_game_id = e.e_super_game_id AND a.boss_server_id = e.e_boss_server_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ -- 超父-合服维度
|
|
|
+ a.source_system as f_source_system,
|
|
|
+ c.super_game_id as f_super_game_id,
|
|
|
+ d.boss_server_id as f_boss_server_id,
|
|
|
+ count(DISTINCT IF(Date(NOW()) = day,user_id,NULL)) as ba1_num, -- 今日充值人数
|
|
|
+ count(DISTINCT IF(date_add(Date(NOW()),-1)=day,user_id,NULL)) as ba2_num, -- 昨日充值人数
|
|
|
+ count(DISTINCT IF(date_add(Date(NOW()),-2)=day,user_id,NULL)) as ba3_num, -- 前天充值人数
|
|
|
+ count(DISTINCT user_id) as total_num -- 总充值人数
|
|
|
+ FROM dm_game_order.t_game_server a
|
|
|
+ LEFT JOIN game_dw.dw_order_day_amount b
|
|
|
+ on a.source_system = b.source_system and a.server_id =b.server_id and a.game_id =b.game_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system ,
|
|
|
+ id,
|
|
|
+ IFNULL(parent_id, id) as parent_id,
|
|
|
+ IFNULL(super_game_id, id) as super_game_id
|
|
|
+ FROM dm_game_order.t_game
|
|
|
+ ) c on a.source_system = c.source_system AND a.game_id = c.id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system,
|
|
|
+ server_id,
|
|
|
+ boss_server_id,
|
|
|
+ super_game_id
|
|
|
+ FROM game_ads.ads_role_combat_num_ranking
|
|
|
+ GROUP BY source_system, super_game_id, server_id, boss_server_id
|
|
|
+ ) d on a.source_system = d.source_system AND a.server_id = d.server_id AND c.super_game_id = d.super_game_id
|
|
|
+ group by a.source_system ,d.boss_server_id, c.super_game_id
|
|
|
+ ) f on a.source_system = f.f_source_system AND a.super_game_id = f.f_super_game_id AND a.boss_server_id = f.f_boss_server_id
|
|
|
+ LEFT JOIN (
|
|
|
+ select
|
|
|
+ -- 超父-合服维度
|
|
|
+ a.source_system as g_source_system,
|
|
|
+ d.boss_server_id as g_boss_server_id,
|
|
|
+ c.super_game_id as g_super_game_id,
|
|
|
+ count(distinct IF(Date(NOW()) = dt,user_id,NULL)) as ba1_active_num, -- 今日活跃人数
|
|
|
+ count(distinct IF(date_add(Date(NOW()),-1)=dt,user_id,NULL)) as ba2_active_num, -- 昨日活跃人数
|
|
|
+ count(distinct IF(date_add(Date(NOW()),-2)=dt,user_id,NULL)) as ba3_active_num -- 前日活跃人数
|
|
|
+ from dm_game_order.t_game_server a
|
|
|
+ left join game_dw.dw_active_log b on a.source_system = b.source_system and a.server_id = b.server_id and a.game_id = b.game_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system ,
|
|
|
+ id,
|
|
|
+ IFNULL(parent_id, id) as parent_id,
|
|
|
+ IFNULL(super_game_id, id) as super_game_id
|
|
|
+ FROM dm_game_order.t_game
|
|
|
+ ) c on a.source_system = c.source_system AND a.game_id = c.id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system,
|
|
|
+ server_id,
|
|
|
+ boss_server_id,
|
|
|
+ super_game_id
|
|
|
+ FROM game_ads.ads_role_combat_num_ranking
|
|
|
+ GROUP BY source_system, super_game_id, server_id, boss_server_id
|
|
|
+ ) d on a.source_system = d.source_system AND a.server_id = d.server_id AND c.super_game_id = d.super_game_id
|
|
|
+ group by a.source_system ,d.boss_server_id, c.super_game_id
|
|
|
+ ) g on a.source_system = g.g_source_system AND a.super_game_id = g.g_super_game_id AND a.boss_server_id = g.g_boss_server_id
|
|
|
+ LEFT JOIN (
|
|
|
+ SELECT
|
|
|
+ source_system as h_source_system,
|
|
|
+ game_id,
|
|
|
+ server_id,
|
|
|
+ server_name,
|
|
|
+ is_merge -- 是否参与过合服
|
|
|
+ FROM dm_game_order.t_game_server_merge
|
|
|
+ ) h on a.source_system = h.h_source_system AND a.boss_server_id = h.server_id AND a.super_game_id = h.game_id
|
|
|
+ GROUP BY source_system,boss_server_id,super_game_id
|
|
|
) a
|
|
|
""" + cri +
|
|
|
"""
|