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

MySQL查询实现全周期全活动计数求和 无匹配记录显示0

问题根源

原有SQL以slm_activities作为主表做左连接,仅能返回已经存在业务关联记录的「活动+评分周期」组合,无法生成所有活动、所有周期的全量组合集合,必然会缺失无匹配数据的组合行。

实现逻辑
  • 首先通过交叉连接(CROSS JOIN)关联activities表(全量活动类型)和periods表(全量评分周期),生成3类活动*4个周期共12行的全量基础组合,这是保证不缺失组合的核心
  • 以全量基础组合作为主表,左连接slm、slm_activities表的实际业务数据,未匹配到的业务记录对应count字段会返回null
  • 聚合求和时通过COALESCE函数将null值转换为0,最终按活动、周期分组输出结果
正确SQL语句
SELECT
    COALESCE(SUM(sa.count), 0) AS activitycount,
    a.activity,
    p.period
FROM
    activities a
CROSS JOIN
    periods p
LEFT JOIN
    slm s ON s.period = p.period
LEFT JOIN
    slm_activities sa ON sa.slmid = s.id AND sa.activity = a.id
GROUP BY
    a.activity, p.period
ORDER BY
    a.activity, p.id;
执行结果说明

基于给出的存量数据,执行上述SQL会返回12行记录,完全符合需求:

  • quiz在1st Grading Period计数为5,其余3个周期计数为0
  • lesson在2nd Grading Period计数为6,其余3个周期计数为0
  • page在4个评分周期的计数均为0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 01:57:27