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

MySQL按月分组统计订单总数量返回行数而非累计值如何解决

问题原因

你当前使用的COUNT(o.qty)函数仅统计分组内非空的qty字段的行数,不会对字段值进行累加计算。2018年1月对应2条订单记录,COUNT统计后返回2,和预期的求和结果不符。

修正后的查询语句

要得到订单数量的总和,将COUNT替换为SUM函数即可,同时可以搭配IFNULL处理左关联可能产生的空值问题:

SELECT YEAR(p.date), MONTH(p.date), SUM(IFNULL(o.qty, 0))
FROM products p LEFT JOIN orders o USING (oid)
GROUP BY YEAR(p.date), MONTH(p.date)

如果你的业务逻辑可以保证所有products表的记录都存在对应orders表的关联记录,也可以简化为直接使用SUM(o.qty)。

执行效果

修正后分组会对每个月的所有qty值累加,2018年1月的计算结果为1+4=5,和预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:42:01