Microsoft SQL Server
ウィンドウ関数
サーチ…
中心移動平均
6ヶ月(126営業日)の中央値の移動平均を計算する:
SELECT TradeDate, AVG(Px) OVER (ORDER BY TradeDate ROWS BETWEEN 63 PRECEDING AND 63 FOLLOWING) AS PxMovingAverage
FROM HistoricalPrices
TradeDateの範囲の始めと終わりには、返される各行の前後に最大 63行が必要となるため、中央に配置されません。最大のTradeDateに達すると、それまでに63個の値を見つけることができます平均に含める。
タイムスタンプ付きイベントのリストで最新の単一アイテムを検索する
イベントを記録するテーブルには、イベントが発生した時刻を記録する日時フィールドが存在することがよくあります。最新の単一のイベントを見つけることは、正確に同一のタイムスタンプで2つのイベントが記録されている可能性が常に高いため、困難な場合があります。すべてのレコードが一意にランク付けされていることを確認するためにrow_number()をover(order by ...)使用し、一番上のレコード(my_ranking = 1)を選択して、
select *
from (
select
*,
row_number() over (order by crdate desc) as my_ranking
from sys.sysobjects
) g
where my_ranking=1
同じ手法を使用して、重複する可能性のある値を持つデータセットから単一の行を返すことができます。
最後の30項目の移動平均
直近30アイテムの移動平均
SELECT
value_column1,
( SELECT
AVG(value_column1) AS moving_average
FROM Table1 T2
WHERE ( SELECT
COUNT(*)
FROM Table1 T3
WHERE date_column1 BETWEEN T2.date_column1 AND T1.date_column1
) BETWEEN 1 AND 30
) as MovingAvg
FROM Table1 T1
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow