たとえば、株式の 3 日移動平均 (実際には 30 日) の出来高を計算しようとしています。最近の 3 つの日付エントリの平均を取得しようとしています (今日から 3 日ではなく)。SQL Server 2012 で行番号を使用して何かをしようとしましたが、成功しませんでした。誰でも助けてもらえますか。以下はテンプレート スキーマであり、SQL での私の無駄な試みです。以下の SQL には、group by を使用したさまざまな化身がありますが、まだ機能していません。どうもありがとう!
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);