我想要計算股票的3日移動平均線(實際上30天)量。 我試圖得到最後3個日期條目的平均值(而不是今天-3天)。我一直在嘗試用SQL Server 2012中的rownumber做些事情,但沒有成功。任何人都可以幫忙。下面是一個模板模式,以及我對SQL的垃圾嘗試。我有以下SQL的各種化身與分組,但仍然無法正常工作。非常感謝!移動平均PER TICKER爲每一天
select dt_eod, ticker, volume
from
(
select dt_eod, ticker, avg(volume)
row_number() over(partition by dt_eod order by max_close desc) rn
from mytable
) src
where rn >= 1 and rn <= 3
order by dt_eod
示例模式:
CREATE TABLE yourtable
([dt_date] int, [ticker] varchar(1), [volume] int);
INSERT INTO yourtable
([dt_date], [ticker], [volume])
VALUES
(20121201, 'A', 5),
(20121201, 'B', 7),
(20121201, 'C', 6),
(20121202, 'A', 10),
(20121202, 'B', 8),
(20121202, 'C', 7),
(20121203, 'A', 10),
(20121203, 'B', 87),
(20121203, 'C', 74),
(20121204, 'A', 10),
(20121204, 'B', 86),
(20121204, 'C', 67),
(20121205, 'A', 100),
(20121205, 'B', 84),
(20121205, 'C', 70),
(20121206, 'A', 258),
(20121206, 'B', 864),
(20121206, 'C', 740);
如果您創建了一個包含Year和BusinessDay(從1到250左右)的Calandar表,那麼您可以將它加入到它,並通過BusinesDay(getdate()) - 3到BusinesDay(getdate())進行平均。 – 2013-03-13 20:56:21