ホームページ >データベース >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) と、データを 1 回渡すクエリを使用します。

<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. 以前の SN と値を追跡するために、MySQL 変数 @lastSN と @lastValue を宣言します。
  2. EnergyLog テーブルの各行について、現在の SN を @lastSN と比較します。
  3. SN が一致する場合、IF() を使用してエネルギー差を計算します。それ以外の場合は、消費量を 0 に設定します。
  4. 比較後、@lastSN と @lastValue を現在の行の値で更新します。
  5. エネルギー消費量が正しく計算されるように、結果を SN と日付で並べ替えます。

MySQL 変数を使用することで、グループ化されたクエリの前の値に基づいてエネルギー消費量を計算するためのシンプルで効率的なソリューションを実装しました。

以上がグループ化された MySQL クエリの前の行の値を減算するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。