MySQL 時間序列分析:模擬股票報價比較的 LAG 函數
MySQL 缺乏內建 LAG 函數可能會使時間序列分析變得複雜,特別是在比較順序股票報價時。 本文示範了一種有效模擬 LAG 函數並計算多個公司隨時間推移的報價變化的解決方法。
我們的方法使用了一個巧妙的技術:
<code class="language-sql">SET @quot = -1; SELECT time, company, @quot AS lag_quote, @quot := quote AS curr_quote FROM stocks ORDER BY company, time;</code>
@quot
變數巧妙地處理了以下兩個問題:
lag_quote
:前一行的引用。 curr_quote
:目前行的引用。 按 company
和 time
對結果進行排序可確保每個公司的數據之間進行準確比較。
為了實現所需的輸出格式(如原始問題中可能要求的那樣),我們使用巢狀查詢:
<code class="language-sql">SET @quot = 0, @latest = 0, @comp = ''; SELECT B.* FROM ( SELECT A.time, A.change, IF(@comp = A.company, 1, 0) AS LATEST, @comp := A.company AS company FROM ( SELECT time, company, quote - @quot AS change, @quot := quote AS curr_quote FROM stocks ORDER BY company, time ) A ORDER BY company, time DESC ) B WHERE B.LATEST = 1;</code>
這種嵌套查詢結構有效地識別每個公司最近的報價變化,以結構化的方式呈現資料。
此方法為在 MySQL 中模擬 LAG 函數提供了一種實用且高效的解決方案,當本機 LAG 函數不可用時尤其有價值。 這是一種適用於各種時間序列分析任務的強大技術。
以上是如何在 MySQL 中模擬滯後函數以進行股票行情的時間序列分析?的詳細內容。更多資訊請關注PHP中文網其他相關文章!