如何修改SQL查询以获取每月的平均CurrentPrice值?
解决按月计算平均价格的问题
你需要修改GROUP BY子句,移除CurrentDate字段,只保留与年、月相关的分组项,这样就能按月聚合计算平均价格:
SELECT DATENAME(month, CurrentDate) AS MonthName, DATENAME(year, CurrentDate) AS Year, MONTH(CurrentDate) AS MonthNumber, CAST(AVG(CurrentPrice) AS DECIMAL(18, 2)) AS Price FROM dbo.Prices GROUP BY DATENAME(year, CurrentDate), MONTH(CurrentDate), DATENAME(month, CurrentDate)
原因说明
原来的查询中,GROUP BY包含了CurrentDate,这会让分组粒度精确到每个具体的日期(甚至时间点),所以计算出的是单日的平均价格。而同一月份的所有记录,DATENAME(year, CurrentDate)、MONTH(CurrentDate)、DATENAME(month, CurrentDate)这三个值完全一致,以此作为分组依据,就能将同一月份的所有数据归为一组,从而得到整月的平均价格。
另外,你最初的查询里的DISTINCT是多余的,GROUP BY本身就会返回唯一的分组结果,去掉后也能得到每月一行的结果。
内容的提问来源于stack exchange,提问作者MTplus
相关产品推荐
相关产品推荐

