3 месяца прокатки в среднем
Вопрос: нужна помощь с запросом, чтобы он отображался как скользящее среднее за 3 месяца
Это то, что у меня сейчас есть
SELECT
Date,
month(date) AS[Month],
year(date) AS[Year],
AVG(ALL Amount) OVER (PARTITION BY Date ORDER BY Date ASC) AS Average
FROM
FactFinance
SELECT
YEAR(Date) AS Year,
MONTH(Date) AS Month,
AVG(Amount) AS AvgAmt
FROM
FactFinance
GROUP BY
YEAR(Date),
MONTH(Date)
ORDER BY
Year,
Month;
GO;
1 ответ
2 вещи, которые я хотел бы сделать, чтобы проверить это: 1) выбрать год, чтобы сделать данные более удобочитаемыми 2) изменить второй запрос, чтобы включить сумму. Первый запрос должен быть изменен, чтобы предварительно рассчитать месячные цифры с помощью cte или подзапроса (я решил использовать подзапрос), и вам нужно использовать предыдущее предложение.., чтобы сообщить серверу sql, сколько месяцев вы хотеть
select month,year,
sum(amt) over (order by month,year ROWS BETWEEN 2 PRECEDING AND current row) sumamount,
avg(amt) over (order by month,year ROWS BETWEEN 2 PRECEDING AND current row) '3monthra'
from
(
SELECT month(date) as [Month],
year(date) as [Year],
sum(Amount) amt,
count(*) as cnt
FROM FactFinance
GROUP BY YEAR([Date]), MONTH([Date])
) s
where year = 2005
order by year, month
SELECT
YEAR(Date) AS Year,
MONTH(Date) AS Month,
sum(amount) as sumamt,
count(*) as cnt,
AVG(Amount) AS AvgAmt
FROM FactFinance
where YEAR(Date) = 2005
GROUP BY YEAR(Date), MONTH(Date)
ORDER BY Year, Month;
GO
month year sumamount 3monthra
----------- ----------- ---------------------- ----------------------
7 2005 11384884.51 11384884.51
8 2005 36016653.13 18008326.565
9 2005 58029544.31 19343181.4366667
10 2005 66734589.35 22244863.1166667
11 2005 79778854.28 26592951.4266667
12 2005 88791927.09 29597309.03
(6 row(s) affected)
Year Month sumamt cnt AvgAmt
----------- ----------- ---------------------- ----------- ----------------------
2005 7 11384884.51 1130 10075.1190353982
2005 8 24631768.62 1122 21953.4479679145
2005 9 22012891.18 1116 19724.8128853047
2005 10 20089929.55 1122 17905.463057041
2005 11 37676033.55 1124 33519.6028024911
2005 12 31025963.99 1126 27554.1420870338
(6 row(s) affected)
Обратите внимание, что это взято из aw2012, надеюсь, ваша версия 2005 года.