|
@@ -121,21 +121,21 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
$baseTotalDaySqlParts = [];
|
|
$baseTotalDaySqlParts = [];
|
|
|
foreach ($yearRange as $year) {
|
|
foreach ($yearRange as $year) {
|
|
|
$tableName = 'base_total_day_' . $year;
|
|
$tableName = 'base_total_day_' . $year;
|
|
|
- $baseTotalDaySqlParts[] = "SELECT * FROM {$tableName} WHERE 1=1 {$whereSql}";
|
|
|
|
|
|
|
+ $baseTotalDaySqlParts[] = "SELECT * FROM {$tableName} WHERE {$whereSql}";
|
|
|
}
|
|
}
|
|
|
$unionBaseTotalDaySql = implode(" UNION ALL ", $baseTotalDaySqlParts);
|
|
$unionBaseTotalDaySql = implode(" UNION ALL ", $baseTotalDaySqlParts);
|
|
|
-
|
|
|
|
|
// 按照每日,获取=>注册数据
|
|
// 按照每日,获取=>注册数据
|
|
|
- $regData = Db::connect('db_data_report')->query("SELECT tdate, SUM('reg_total') reg_total FROM ( {$unionBaseTotalDaySql} ) AS all_base_total_day GROUP BY tdate order by tdate ");
|
|
|
|
|
|
|
+ $regData = Db::connect('db_data_report')->query("SELECT tdate, SUM(reg_total) reg_total FROM ( {$unionBaseTotalDaySql} ) AS all_base_total_day GROUP BY tdate order by tdate ");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
+
|
|
|
// 2. 活跃数据:$actData = 按照日期,获取每日的 活跃数 SUM(【active_total】) 活跃天数 【days】, 分组 【reg_date,days】,game_active_day_2025
|
|
// 2. 活跃数据:$actData = 按照日期,获取每日的 活跃数 SUM(【active_total】) 活跃天数 【days】, 分组 【reg_date,days】,game_active_day_2025
|
|
|
$yearRange = getYearRange($params['reg_date'][0], $params['reg_date'][1]);
|
|
$yearRange = getYearRange($params['reg_date'][0], $params['reg_date'][1]);
|
|
|
$gameActiveDaySqlParts = [];
|
|
$gameActiveDaySqlParts = [];
|
|
|
|
|
|
|
|
foreach ($yearRange as $year) {
|
|
foreach ($yearRange as $year) {
|
|
|
$tableName = 'game_active_day_' . $year;
|
|
$tableName = 'game_active_day_' . $year;
|
|
|
- $gameActiveDaySqlParts[] = "SELECT * FROM {$tableName} WHERE 1=1 {$whereSql}";
|
|
|
|
|
|
|
+ $gameActiveDaySqlParts[] = "SELECT * FROM {$tableName} WHERE {$whereSql}";
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$unionGameActiveDaySql = implode(" UNION ALL ", $gameActiveDaySqlParts);
|
|
$unionGameActiveDaySql = implode(" UNION ALL ", $gameActiveDaySqlParts);
|
|
@@ -165,9 +165,9 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
for ($i = 1; $i <= $days; $i++) {
|
|
for ($i = 1; $i <= $days; $i++) {
|
|
|
$dayKey = 'd' . $i;
|
|
$dayKey = 'd' . $i;
|
|
|
// d1...dn的reg = 记录按日的注册数
|
|
// d1...dn的reg = 记录按日的注册数
|
|
|
- $totalData[$dayKey]['reg'] += $r['reg_total'];
|
|
|
|
|
|
|
+ $totalData[$dayKey]['reg'] = !empty($totalData[$dayKey]['reg']) ? $totalData[$dayKey]['reg'] + $r['reg_total'] : $r['reg_total'];
|
|
|
}
|
|
}
|
|
|
- $totalData['reg'] += $r['reg_total'];
|
|
|
|
|
|
|
+ $totalData['reg'] = !empty($totalData['reg']) ? $totalData['reg'] + $r['reg_total'] : $r['reg_total'];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// 遍历每日的活跃数
|
|
// 遍历每日的活跃数
|
|
@@ -187,7 +187,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
// N日留存率 = 第N天活跃数 ÷ 注册日注册数 × 100%。
|
|
// N日留存率 = 第N天活跃数 ÷ 注册日注册数 × 100%。
|
|
|
$list[$reg_date][$dayKey] = getPercent($r['active'], $list[$reg_date]['reg']);
|
|
$list[$reg_date][$dayKey] = getPercent($r['active'], $list[$reg_date]['reg']);
|
|
|
// d1...dn的reg = 记录按日的活跃数
|
|
// d1...dn的reg = 记录按日的活跃数
|
|
|
- $totalData[$dayKey]['active'] += $r['active'];
|
|
|
|
|
|
|
+ $totalData[$dayKey]['active'] = !empty($totalData[$dayKey]['active']) ? $totalData[$dayKey]['active'] + $r['active'] : $r['active'];
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
$total = [];
|
|
$total = [];
|
|
@@ -195,7 +195,7 @@ class ChannelAnalysisLogic extends BaseLogic
|
|
|
if ($key == 'reg') {
|
|
if ($key == 'reg') {
|
|
|
$total['reg'] = $val;
|
|
$total['reg'] = $val;
|
|
|
} else {
|
|
} else {
|
|
|
- $total[$key] = getPercent($val['active'], $val['reg']);
|
|
|
|
|
|
|
+ $total[$key] = getPercent($val['active']??0, $val['reg']??0);
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|