MySQL按年份季度分组计算平均销售额的查询实现
MySQL按年季度统计平均销售额实现方案
你可以直接通过单条聚合查询完成统计,不需要先导出单月数据再二次加工,查询结果可以直接对接Python绘图需求。
最终可直接运行的SQL语句
SELECT quarter(`Date`) AS Quarter, year(`Date`) AS Year, ROUND(AVG(Sales), 0) AS AverageSales, CONCAT('Q', quarter(`Date`), '_', RIGHT(year(`Date`), 2)) AS QuarterLabel FROM USretail92_21 WHERE kind = "Men's clothing stores" GROUP BY year(`Date`), quarter(`Date`) ORDER BY year(`Date`), quarter(`Date`);
输出字段说明
Quarter:季度编号,取值为1/2/3/4,分别对应1-3月、4-6月、7-9月、10-12月四个季度Year:完整四位年份值,范围1992-2021AverageSales:对应季度内3个月销售额的算术平均值,默认按示例要求取整数输出;如果需要保留小数位,只需修改ROUND函数的第二个参数,例如保留2位小数可写为ROUND(AVG(Sales), 2)QuarterLabel:直接生成符合绘图要求的X轴标签,格式完全匹配Q1_92到Q4_21的规则,数据导入Python后可直接作为X轴维度使用,无需额外做字符串拼接处理。
注意事项
- 禁止仅按季度字段分组:如果分组条件只写
quarter(Date),会把所有年份同季度的销售额混在一起计算,导致统计结果完全错误 - 排序规则必须和时间线一致:按年、季度先后升序排列,输出结果天然符合时间序列顺序,绘图前不需要额外做排序处理
- 语法兼容处理:
Date是MySQL的内置保留关键字,书写时建议用反引号包裹,避免触发语法报错
内容的提问来源于stack exchange,提问作者Pishi
相关产品推荐
相关产品推荐

