MySQL按年、月统计各公司产品销量的SQL查询问题
正确的MySQL查询语句实现按年、月、公司统计产品数量
这是能得到你预期结果的MySQL查询语句:
SELECT YEAR(date) AS Year, MONTHNAME(date) AS Month, COUNT(*) AS Products, company AS Company FROM database.products WHERE YEAR(date) = 2022 GROUP BY YEAR(date), MONTH(date), company ORDER BY MONTH(date), company;
原查询存在的问题:
- 没有选择
YEAR(date)字段,导致结果缺失年份列 - GROUP BY仅按月份分组,未包含
company,无法按公司维度拆分统计数据 - 语句末尾多了一个多余的右括号
) WITH ROLLUP会生成汇总行,但你的预期结果不需要这类汇总数据,应当移除
正确语句的逻辑:
- 明确指定需要返回的四个字段,完全匹配预期结果的列结构
- GROUP BY同时包含年份、月份、公司三个维度,确保每个分组对应「某年-某月-某公司」的唯一组合,统计该组合下的产品总数
- 增加ORDER BY子句,让结果按月份、公司排序,和预期结果的展示顺序一致
内容的提问来源于stack exchange,提问作者Leonardo Urbiola
相关产品推荐
相关产品推荐

