【发布时间】:2018-02-13 10:04:09
【问题描述】:
我有一个脚本可以根据过去 3 个月计算移动平均值。
是否可以修改此移动平均线以仅显示第 4 个月的值?或者当我想基于 4 个月计算时,显示第 5 行的值,依此类推...
因此,当我有足够的数据进行计算时,仅显示该月的值。
SELECT
[Brand], [month],
CAST(SUM([Volume]) AS INT) AS [Volume (t)],
AVG(CAST(SUM([Volume]) AS INT)) OVER (PARTITION BY [Brand]) AS [Average (t)],
AVG(CAST(SUM([Volume]) AS INT)) OVER (PARTITION BY [Brand] ORDER BY [month] ROWS BETWEEN 3 PRECEDING AND 1 PRECEDING) AS [Moving Average (3)]
FROM
dw_lc_full_aggregated_1
WHERE
[year] = 2016 AND
[month] BETWEEN 1 AND 9 AND
[Navision Source] = 'HU' AND
[Brand] = 'xxxxxxx'
GROUP BY
[Brand], [month]
【问题讨论】:
-
你试过使用
CASE和COUNT吗? -
还没有,因为我不知道该怎么做:)
-
试一试,当
COUNTOVER您的PARTITION大于3 时,您基本上想要CASE。您也许可以直接将其添加到当前查询中,否则使用您的PARTITION添加行号,找到它的最大值,然后过滤掉小于 3 的最大行号 -
您如何决定在移动平均字段中必须包含多少个月?该查询的外观如何?