【发布时间】:2014-07-02 00:21:40
【问题描述】:
我正在尝试获取一组房地产数据的移动平均值,然后我可以使用 MS SQL 2005 绘制图表。
字段为:DateSold datetime、FloorSQM decimal(8,2)、Price decimal(10,0)
我需要做的是,在我们有数据的情况下,每个月内出售的所有房产的每平方米平均价格可以追溯到几年前。
因此,我需要为每个物业定价/楼层面积,然后对每个月应用移动平均线。希望这是有道理的。
我完全被困在试图弄清楚这一点,无休止的谷歌搜索总是令人困惑。
我以为我在另一篇文章中找到了我想要的东西,但是当我尝试编译它时,我不断收到“'m' 附近的语法错误”。
SELECT YEAR(DateSold) AS year,
MONTH(DateSold) AS month,
ROUND(Euros/CONVERT(DECIMAL(10,2),FloorSQM),2) as avg
FROM
(select s.*, DATE_ADD(DTE, INTERVAL m.i MONTH) DateSold, m.i
FROM Property s
cross join (select 0 i union select 1 union select 2 union select 3 union
select 4 union select 5 union select 6 union select 7 union
select 8 union select 9 union select 10 union select 11) m) sq
WHERE DateSold <= curdate()
GROUP BY YEAR(DateSold), MONTH(DateSold)
当我完成这项工作时,我需要引入 WHERE 子句,以便我可以将找到的属性限制在某些类型(房屋、公寓)和区域(纽约、洛杉矶等)
有人可以帮忙吗?非常感谢您的帮助。
【问题讨论】:
-
SQL Server 2005 在累积值(包括移动平均线)方面并不出色。您是否有能力生成每月结果,然后在您的报告环境中处理这些结果以将其更改为移动平均线?
-
您是什么意思“对每个月应用移动平均线”?您能否提供示例数据和预期结果。
-
一个问题是您正在混合来自 MySQL 和 SQL Server 的语法 -
DATE_ADD是 MySQL,DATEADD是 SQL Server。CurDate()是 MySQL,GETDATE()是 SQL Server。
标签: sql average moving-average