首頁 >資料庫 >mysql教程 >如何在分組 MySQL 查詢中減去前一行的值?

如何在分組 MySQL 查詢中減去前一行的值?

DDD
DDD原創
2025-01-10 12:37:42884瀏覽

How to Subtract the Previous Row's Value in a Grouped MySQL Query?

MySQL:分組查詢中減去前一行的值

在資料分析中,從前一行減去一個值是很常見的任務,但在處理分組資料時可能會帶來挑戰。 MySQL 提供了一種通用的方法來解決這種情況。

為了計算每個 SN 的連續行之間的能耗差,我們使用 MySQL 的系統變數(@lastSN 和 @lastValue)以及對資料進行單次傳遞的查詢:

<code class="language-sql">SELECT
  EL.SN,
  EL.Date,
  EL.Value,
  IF(@lastSN = EL.SN, EL.Value - @lastValue, 0.00) AS Consumption,
  @lastSN := EL.SN,
  @lastValue := EL.Value
FROM
  EnergyLog EL,
  (SELECT @lastSN := 0, @lastValue := 0) SQLVars
ORDER BY
  EL.SN, EL.Date;</code>

查詢的工作原理如下:

  1. 宣告 MySQL 變數 @lastSN 和 @lastValue 來追蹤前一個 SN 和 Value。
  2. 對於 EnergyLog 表中的每一行,將目前 SN 與 @lastSN 進行比較。
  3. 如果 SN 匹配,則使用 IF() 計算能耗差。否則,將 Consumption 設定為 0。
  4. 比較之後,使用目前行的值更新 @lastSN 和 @lastValue。
  5. 依 SN 和 Date 排序結果,以確保正確的能耗計算。

透過使用 MySQL 變量,我們實作了一種簡潔且有效率的解決方案,用於在分組查詢中根據前一個值計算能耗。

以上是如何在分組 MySQL 查詢中減去前一行的值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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