SQL - 月平均值而不是每日平均值

Dto*_*heG 5 sql t-sql sql-server sql-server-2008

我有一个名为值的表,包含3列 - 位置,值,日期

我想计算出每月的平均价值

到目前为止我有

SELECT Location, Avg(value), date  
FROM Value  
GROUP BY Location, date 
Run Code Online (Sandbox Code Playgroud)

这会返回平均值,但是每天输入一个值,因此我每天平均而不是每月平均值,我怎样才能达到月平均值?

Joe*_*eph 9

试试这个:

SELECT    Location,
          Avg(value),
          month(date),
          year(date)
FROM      Value
GROUP BY  Location,
          month(date),
          year(date)
Run Code Online (Sandbox Code Playgroud)


Tar*_*ryn 5

如果您只想要按月分组,则可以使用以下内容:

SELECT Location, Avg(value) AvgVal, Month(date) Mnth
FROM Value
GROUP BY Location, Month(date)
Run Code Online (Sandbox Code Playgroud)

您甚至可以使用GROUPING SETS,这将GROUP BY一个月,一年,位置,然后给你一个总的所有:

SELECT Location, 
  Avg(value) AvgVal, 
  Month(dt) Mnth,
  Year(dt) Yr
FROM yourtable
GROUP BY 
  GROUPING SETS((Month(dt), Year(dt), Location), (Location));
Run Code Online (Sandbox Code Playgroud)

请参阅SQL Fiddle with Demo