首頁 >資料庫 >mysql教程 >如何在 MySQL 中模擬 LAG 函數?

如何在 MySQL 中模擬 LAG 函數?

Linda Hamilton
Linda Hamilton原創
2025-01-18 01:17:07920瀏覽

How to Simulate a LAG Function in MySQL?

在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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn