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

如何用单条SQL查询实现指定日期范围用户活动数据按日拆分统计

按日拆分用户会话统计的SQL实现方案

可以直接通过单条SQL实现按日维度的统计结果,仅需要在原有查询的基础上增加日期维度的提取和分组规则即可,优化后的查询语句如下:

SELECT 
    DATE(created_at) AS activity_date,
    user_id, 
    COUNT(user_id) AS total_logins,
    SUM(TIMESTAMPDIFF(SECOND, created_at, completed_at)) AS total_time_spent_seconds
FROM metrics_session 
WHERE created_at >= '2021-04-01' 
  AND created_at < '2021-05-01' -- 统计4月全月数据时使用该写法,避免遗漏4月30日的全天记录
  AND completed_at IS NOT NULL
GROUP BY activity_date, user_id
ORDER BY activity_date, user_id;

调整说明

  • 新增DATE(created_at) AS activity_date字段,将datetime类型的会话创建时间转换为纯日期格式,作为日期分组的依据
  • GROUP BY子句新增activity_date字段,实现「日期+用户ID」的双重分组,直接输出每日每个用户的统计明细
  • 原有TIMEDIFF函数替换为TIMESTAMPDIFF(SECOND, created_at, completed_at),返回两个时间点的差值秒数,避免TIMEDIFF返回值上限(838小时)导致的长会话统计溢出问题,后续在Python中可以很方便的将秒数转换为时分秒、小时等需要的展示格式
  • 日期筛选条件调整为半开区间写法,避免用<=判断时漏掉目标日期当日非0点的记录

如果你的前端图表需要展示统计区间内所有日期(包括当日无任何用户会话的日期),可以提前维护一张日期维度表,左关联上述统计结果即可补全缺失日期的0值记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 02:03:00