我需要计算过去5个月的平均值(APR,MAY,JUN,JUL,AUG)。我需要考虑2个分区:区域(总共6个区域)和状态(构建和流程之间)。目前数据是每周一次的格式,因此我将这几周的数据进行了四舍五入以获得月度数据。如何使用两个分割获得平均每月数字。该表看起来像这样:
Region|Orders|BuildStatus|Months
GP |1 |Build |APR
GP |2 |Non-Build |APR
GP |1 |Build |MAY
GP |2 |Non-Build |MAY
PD |1 |Build |APR
PD |2 |Non-Build |APR
PD |1 |Build |MAY
PD |2 |Non-Build |MAY
直到8月,它还与其他5个地区重复。
请协助正确计算,如果可能,您也可以建议查询。 结果应该是:
Region|Avg_Orders|BuildStatus
GP |1 |Build
GP |2 |Non-Build
PD |1 |Build
PD |2 |Non-Build
平均数字应该是5个月的平均数。
由于
答案 0 :(得分:0)
DECLARE @t TABLE(
Region NVARCHAR(2)
,Orders INT
,BuildStatus NVARCHAR(100)
,Months NVARCHAR(3)
)
INSERT INTO @t VALUES
('GP', 1,'Build', 'APR')
,('GP', 2,'Non-Build', 'APR')
,('GP', 1,'Build', 'MAY')
,('GP', 2,'Non-Build', 'MAY')
,('PD', 1,'Build', 'APR')
,('PD', 2,'Non-Build', 'APR')
,('PD', 1,'Build', 'MAY')
,('PD', 2,'Non-Build', 'MAY');
WITH cteAgg AS(
SELECT t.Region, t.BuildStatus, SUM(t.Orders) Orders, COUNT(DISTINCT t.Months) MonthsCount
FROM @t t
GROUP BY t.Region, t.BuildStatus
)
SELECT Region, Orders/MonthsCount AS Avg_Orders, BuildStatus
FROM cteAgg
ORDER BY 1