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

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

DDD
發布: 2025-01-10 12:37:42
原創
918 人瀏覽過

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

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

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

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

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;
登入後複製

查詢的工作原理如下:

  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
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板