You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:修复Laravel查询以获取近7天每日用户平均使用时长

修复后的Laravel查询构造器代码(实现过去7天每日全体用户平均使用时长)

你现在的代码是计算单个用户的平均使用时长,但要实现过去7天内每日的全体用户平均使用时长,需要调整分组逻辑和日期范围,同时要先计算每个用户每日的平均时长,再聚合得到当日的全体用户平均值。以下是修复后的代码:

use Carbon\Carbon;

// 定义时间范围:过去7天(包含今天)
$endDate = Carbon::today();
$startDate = $endDate->copy()->subDays(7);

// 第一步:子查询获取每个用户每日的平均使用时长
$dailyUserAvg = DB::table('active_user')
    ->select(
        DB::raw('DATE(acu_at) as date'),
        DB::raw('acu_name as user_email'),
        DB::raw('AVG(TIMESTAMPDIFF(MINUTE, acu_at, acu_et)) as user_daily_avg')
    )
    ->join('u_info_one', 'active_user.acu_name', '=', 'u_info_one.u_email')
    ->whereBetween('acu_at', [$startDate, $endDate])
    ->groupBy('date', 'user_email');

// 第二步:基于子查询计算每日的全体用户平均时长
$dailyOverallAvg = DB::table($dailyUserAvg, 'daily_user_avg')
    ->select(
        'date',
        DB::raw('AVG(user_daily_avg) as overall_average_time'),
        DB::raw('COUNT(DISTINCT user_email) as total_users') // 可选:当日活跃用户数
    )
    ->groupBy('date')
    ->orderBy('date')
    ->get();

关键修改点说明:

  • 日期范围限定:用whereBetween明确筛选过去7天的数据,避免只取到今天之前的所有历史数据
  • 两级分组逻辑:
    1. 先按日期+用户分组,计算每个用户当日的平均使用时长
    2. 再按日期分组,计算当日所有用户平均时长的平均值,得到全体用户的当日平均
  • 日期格式化:用DATE(acu_at)提取日期部分,确保按自然日维度分组统计
  • 额外统计项:可选添加total_users统计当日活跃用户数,辅助分析时长数据的参考维度

如果你需要的是当日所有会话的平均时长(而非用户级别的平均),可以简化为单级分组:

$dailySessionAvg = DB::table('active_user')
    ->select(
        DB::raw('DATE(acu_at) as date'),
        DB::raw('AVG(TIMESTAMPDIFF(MINUTE, acu_at, acu_et)) as session_average_time'),
        DB::raw('COUNT(*) as total_sessions'),
        DB::raw('COUNT(DISTINCT acu_name) as total_users')
    )
    ->join('u_info_one', 'active_user.acu_name', '=', 'u_info_one.u_email')
    ->whereBetween('acu_at', [$startDate, $endDate])
    ->groupBy('date')
    ->orderBy('date')
    ->get();

注意事项:

  • 确保acu_at字段是datetime类型,否则DATE()函数和日期筛选逻辑可能失效
  • 如果你的“过去7天”需求是不包含今天(比如最近7个完整自然日),可以把$endDate改为Carbon::yesterday()

内容的提问来源于stack exchange,提问作者Jerad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.12 04:08:41