MySQL での消費量の計算: SN でグループ化された前の行の値の減算
このガイドでは、MySQL テーブル内の各 SN
グループ内の連続する値を比較することによって消費量を計算する方法を説明します。 データには、時間の経過に伴う測定値を表す SN
(シリアル番号) 列と Value
列が含まれています。 目標は、現在の値から前の値を減算して、各 SN
の消費量を計算することです。
これを実現するためにユーザー定義変数を利用する MySQL クエリを次に示します。
<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 := NULL, @lastValue := NULL) AS SQLVars ORDER BY EL.SN, EL.Date;</code>
クエリの説明:
変数の初期化: サブクエリ (SELECT @lastSN := NULL, @lastValue := NULL) AS SQLVars
は、ユーザー定義変数 @lastSN
(前の SN
を追跡するため) と @lastValue
(前の Value
を追跡するため) を 。 0 の代わりに NULL
を使用すると、各 NULL
グループの最初の行が正しく処理されます。SN
行ごとの処理: メインのクエリは、 テーブル (EnergyLog
というエイリアス) を EL
と SN
の順序で繰り返し処理します。Date
消費量の計算: ステートメントは、現在の IF
(SN
) が以前に処理された EL.SN
(SN
) と一致するかどうかをチェックします。@lastSN
EL.Value - @lastValue
SN
変数の更新: および @lastSN := EL.SN
は、次の行の比較の変数を更新します。@lastValue := EL.Value
出力: クエリは、各行の 、SN
、Date
、および計算された Value
を返します。Consumption
グループ内の消費量を効率的に計算し、より複雑なサブクエリや結合の必要性を排除します。 ユーザー定義変数を使用すると、計算が簡潔になり、パフォーマンスが向上します。SN
以上がMySQL で前の行の値を SN ごとにグループ化して減算して消費量を計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。