如何按月份统计订单总数?当前SQL返回重复月份结果
问题解决:按月份统计订单总数
你的问题出在使用DISTINCT而非分组聚合来统计数据。要得到每个月份的订单总数,需要用GROUP BY子句按月份分组后再计算数量,修改后的SQL语句如下:
SELECT MONTH(orderdate) AS [Mon], COUNT(orderid) AS [Cnt] FROM Orders WHERE orderdate >= x AND orderdate < y GROUP BY MONTH(orderdate)
原因说明:
DISTINCT的作用是对查询结果的整行数据去重,但它无法实现分组聚合统计。你原来的语句返回重复月份,是因为没有对月份进行分组,数据库无法正确聚合每个月份的订单数量。GROUP BY MONTH(orderdate)会将数据按月份分成独立的分组,COUNT(orderid)会针对每个分组统计订单ID的数量,最终得到每个月份的总订单数,正好符合你想要的结果。
内容的提问来源于stack exchange,提问作者Phillip Price
相关产品推荐
相关产品推荐

