在MySQL中模擬LAG函數
MySQL本身並不支援LAG函數來計算連續行之間的值差異。但是,我們可以透過以下方法模擬LAG函數的功能。
模擬LAG函數
以下SQL語句模擬了MySQL中的LAG函數:
<code class="language-sql">SET @quot=-1; select time,company,@quot lag_quote, @quot:=quote curr_quote from stocks order by company,time;</code>
這裡,@quot
是一個使用者自訂變量,用於儲存前一行的報價。對於第一行,@quot
初始化為-1。 curr_quote
儲存目前行的報價。
自訂結果
雖然上述模擬提供了滯後值,但它並沒有以問題中指定的格式呈現結果。為了達到該格式,可以使用以下嵌套查詢:
<code class="language-sql">SET @quot=0,@latest=0,company=''; 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 curr_quote from stocks order by company,time) A order by company,time desc) B where B.LATEST=1;</code>
這個巢狀查詢計算報價差異,並識別每個公司的最後一行,從而產生所需格式的輸出。
以上是如何在 MySQL 中模擬 LAG 函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!