如何按月份分组聚合产品表数据,统计各品类产品总价?
解决方案
嘿,这就给你搞定这个统计需求!首先看你的products表,datepurchased字段是'YYYY Month'这种格式,我给你准备了两种场景的SQL语句,你可以根据实际需要选:
场景1:按「年月组合」作为月份键(更精准,区分同月份不同年份的数据)
这应该是最常用的情况,毕竟2017年12月和2018年12月的数据肯定要分开统计对吧?
SELECT datepurchased AS month_key, productcategory, SUM(productprice) AS total_category_price FROM products GROUP BY datepurchased, productcategory ORDER BY datepurchased, productcategory;
语句说明:
datepurchased AS month_key:直接把原表的年月字段作为你要的「月份键」,重命名后更直观;SUM(productprice):对每个年月+分类组合的产品价格求和,得到该分类在对应月份的总价;GROUP BY datepurchased, productcategory:按年月和产品分类分组,确保每个分组都是唯一的年月+分类组合;ORDER BY:让结果按年月、分类排序,方便查看。
场景2:只按「月份名称」作为键(忽略年份,把所有同月份的不同年份数据合并)
如果你不需要区分年份,只想看12月、1月这种跨年份的分类总价,就用这个版本:
SELECT SUBSTRING_INDEX(datepurchased, ' ', -1) AS month_key, productcategory, SUM(productprice) AS total_category_price FROM products GROUP BY SUBSTRING_INDEX(datepurchased, ' ', -1), productcategory ORDER BY month_key, productcategory;
语句说明:
SUBSTRING_INDEX(datepurchased, ' ', -1):从datepurchased字段里提取最后一部分(也就是月份名称),比如从'2017 December'里拿到'December';- 后续的分组、求和逻辑和场景1一致,只是分组依据变成了纯月份名称。
内容的提问来源于stack exchange,提问作者Philip E
相关产品推荐
相关产品推荐

