簡體   English   中英

如何使用 LAG 函數進行 STDEV 計算?

[英]How to do a STDEV calculation with the LAG function?

我正在運行這樣的代碼:

SELECT ID, Date, Price,
    STDEV(Price) OVER (ORDER BY ID, Date ROWS BETWEEN 30 PRECEDING AND CURRENT ROW) As OneMonths,
    STDEV(Price) OVER (ORDER BY ID, Date ROWS BETWEEN 60 PRECEDING AND CURRENT ROW) As TwoMonths,
    STDEV(Price) OVER (ORDER BY ID, Date ROWS BETWEEN 90 PRECEDING AND CURRENT ROW) As ThreeMonths
FROM Price_Table

這給了我這個結果。

在此處輸入圖片說明

在第一行中,對於三個方差,我總是有三個空值。 這是有道理的。 但是,每次 ID 更改時,我都必須獲得前一個 ID 的價格,因為每次 ID 更改時,我都希望標准偏差會重置。 所以,橙色​​的第一行應該是空的,我認為下一行應該是零,因為第二天價格沒有變化。 我嘗試將 LAG 函數包裝在 STDEV 函數周圍,但出現錯誤。 我嘗試了相反的方法,也出現了錯誤。

如果你想要每個 id的值,那么你需要partition by

SELECT ID, Date, Price,
       STDEV(Price) OVER (PARTITION BY ID ORDER BY Date ROWS BETWEEN 30 PRECEDING AND CURRENT ROW) As OneMonths,
       STDEV(Price) OVER (PARTITION BY ID ORDER BY Date ROWS BETWEEN 60 PRECEDING AND CURRENT ROW) As TwoMonths,
       STDEV(Price) OVER (PARTITION BY ID ORDER BY Date ROWS BETWEEN 90 PRECEDING AND CURRENT ROW) As ThreeMonths
FROM Price_Table;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM