如何在MySQL中借助其他表属性分组查询并统计月度销量
解决方案:统计含零销量的月度销售记录数
要实现包含销量为0的月度统计,核心是从Month表(全量月份)出发做左连接,确保所有月份都能出现在结果中。以下是具体SQL语句:
SELECT m.MonthName, COUNT(s.Date) AS SaleRecordCount FROM Month m LEFT JOIN Date d ON m.MonthID = d.Month LEFT JOIN Sales s ON d.DateID = s.Date GROUP BY m.MonthID, m.MonthName ORDER BY m.MonthID;
关键说明:
- 左连接的作用:以
Month表为主表,依次左连接Date和Sales表,这样即使某个月份没有对应的日期记录或销售记录,该月份依然会被保留在结果集中。 - 统计逻辑:
COUNT(s.Date)会忽略NULL值,当某个月份没有销售记录时,s.Date为NULL,统计结果即为0,符合需求。 - 分组依据:按
MonthID(主键)分组保证每个月份唯一,同时带上MonthName用于展示。
内容的提问来源于stack exchange,提问作者Asad Hussain
相关产品推荐
相关产品推荐

