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

MySQL如何统计数据表中每个用户的每周视频浏览次数?

MySQL 按用户按周统计浏览次数实现方案

首先假设你的浏览记录表名为view_records,如果实际表名不同可自行替换。

实现思路

  • 先将每条记录的when_added字段换算为对应周的开始、结束日期
  • 按user_id、周开始/结束日期分组,统计分组内的记录数即为当周浏览次数

注:默认按国内习惯以周一作为每周第一天,如果需要以周日为每周第一天可以调整对应函数参数。

可直接运行的SQL语句

SELECT
  user_id,
  -- 拼接周时间段,格式为X月X日-X月X日
  CONCAT(
    MONTH(week_start), '月', DAY(week_start), '日',
    '-',
    MONTH(week_end), '月', DAY(week_end), '日'
  ) AS 周时间段,
  COUNT(*) AS 当周浏览次数
FROM (
  SELECT
    user_id,
    when_added,
    -- 计算当周周一的日期
    DATE_SUB(
      DATE(when_added),
      INTERVAL (WEEKDAY(when_added)) DAY
    ) AS week_start,
    -- 计算当周周日的日期
    DATE_ADD(
      DATE(when_added),
      INTERVAL (6 - WEEKDAY(when_added)) DAY
    ) AS week_end
  FROM view_records
) t
GROUP BY user_id, week_start, week_end
ORDER BY user_id, week_start;

关键函数说明

  • WEEKDAY(date):返回日期对应的星期索引,周一为0,周日为6,刚好适配国内周起始习惯
  • DATE_SUB/DATE_ADD:用来根据当前日期偏移计算周的起止日期
  • CONCAT:用来拼接你需要的“X月X日-X月X日”格式的时间段文本

可选调整项

如果需要以周日作为每周第一天,只需要把子查询里的week_start和week_end计算逻辑替换为以下内容即可:

-- 周起始为周日的计算逻辑
DATE_SUB(DATE(when_added), INTERVAL (DAYOFWEEK(when_added)-1) DAY) AS week_start,
DATE_ADD(DATE(when_added), INTERVAL (7 - DAYOFWEEK(when_added)) DAY) AS week_end

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 13:15:06