我正在尝试计算股票的 3 天移动平均线(实际上是 30 天)交易量。我正在尝试获取最后 3 个日期条目的平均值(而不是今天 - 3 天)。我一直在尝试对 SQL Server 2012 中的 rownumber 做一些事情,但没有成功。任何人都可以帮忙。下面是一个模板模式,以及我对 SQL 的垃圾尝试。我与 group by 有以下 SQL 的各种化身,但仍然无法正常工作。非常感谢!
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);