我想编写一个具有平均值(不会很难)的查询,但是当我得到平均值时,我想将它保存在某个地方。让我从上个月开始平均保存table_a.last_month_average。现在我再次运行查询,这将是current_month_average。我想比较这两列,看看current_month_average是否从last_month_average增加。
在我比较之后,我想从这两个中输出最大的平均数。在我这样做之后,我想将current_month_average移动到last_month_average,以便在下个月查询运行时,它变为旧的平均值。
这可能在sql中吗?或者有更好的方法可以做到这一点?任何建议都会有所帮助。
答案 0 :(得分:0)
在我比较之后,我想从这两个中输出最大的平均数。在我这样做之后,我想将current_month_average移动到last_month_average,以便在下个月查询运行时,它变为旧的平均值。
据我了解,此操作是从所有历史记录中选择最大month_average。因此,您不需要记录current_month_average和last_month_average。相反,所有历史月平均值的表格都很有用。假设有一个名为 monthaverage 的表,其中包含列(Id,Month,Average),您可以查询
SELECT TOP 1 T1.*
, CASE WHEN
T1.Average > (SELECT TOP 1 T2.Average
FROM monthaverage T2
WHERE T2.Month < T1.Month
ORDER BY Month DESC)
THEN 'Increased'
ELSE 'Not Increased'
END
FROM monthaverage T1
ORDER BY T1.Average DESC
如果您有机会从SQL SERVER 2012运行它,则可以利用LAST_VALUE函数。查询就像
SELECT TOP 1 *, CASE WHEN Average > LAST_VALUE(Average) OVER (ORDER BY Month) THEN 'Increased' ELSE 'Not Increased' END
FROM monthaverage
ORDER BY Average DESC