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

如何编写MySQL查询统计每个账户每月的周六事件记录数量?

MySQL统计用户每月周六事件数查询方案

完整查询语句

SELECT
    a.name AS Name,
    SUM(CASE WHEN MONTH(e.date) = 9 AND DAYOFWEEK(e.date) = 7 THEN 1 ELSE 0 END) AS September,
    SUM(CASE WHEN MONTH(e.date) = 10 AND DAYOFWEEK(e.date) = 7 THEN 1 ELSE 0 END) AS October,
    SUM(CASE WHEN MONTH(e.date) = 11 AND DAYOFWEEK(e.date) = 7 THEN 1 ELSE 0 END) AS November,
    SUM(CASE WHEN MONTH(e.date) = 12 AND DAYOFWEEK(e.date) = 7 THEN 1 ELSE 0 END) AS December
FROM accounts a
LEFT JOIN events e ON a.ID = e.account_id
-- 若需限定仅统计2021年数据,可取消下一行注释
-- AND YEAR(e.date) = 2021
GROUP BY a.ID, a.name
ORDER BY a.name;

逻辑说明

  • 周六判定:MySQL内置DAYOFWEEK()函数返回值范围为1~7,对应周日到周六,因此值等于7即代表该日期为周六。
  • 分月统计:通过CASE WHEN按月份筛选符合周六条件的记录,配合SUM()累加计数,无符合条件的记录时默认返回0,完全匹配要求的输出格式。
  • 关联规则:使用LEFT JOIN关联账号表和事件表,确保没有事件记录的用户也会出现在最终结果中,不会遗漏有效账号。
  • 分组逻辑:按账号ID和姓名分组,保证每个用户对应唯一一行统计结果。

内容的提问来源于stack exchange,提问作者T. Hægh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 13:57:00