ホームページ > データベース > mysql チュートリアル > MySQL の連続する行間のエネルギー消費量の差を SN によって計算する方法

MySQL の連続する行間のエネルギー消費量の差を SN によって計算する方法

Patricia Arquette
リリース: 2025-01-10 12:03:43
オリジナル
296 人が閲覧しました

How to Calculate Energy Consumption Differences Between Consecutive Rows in MySQL by SN?

MySQL: シリアル番号 (SN) による連続する行間のエネルギー消費量の差の計算

このドキュメントでは、シリアル番号 (SN) でグループ化された MySQL データベース内の連続する行間のエネルギー消費量の差を計算する方法の概要を説明します。

問題:

エネルギー消費データを含むテーブルが与えられた場合、目標は、特定の SN の現在の値と前の値の間の変化を表す、各 SN の消費量の差を計算することです。

サンプルデータ:

次の表 (EnergyLog) は、初期データ構造を示しています。

SN Date Value
2380 2012-10-30 00:15:51 21.01
2380 2012-10-31 00:31:03 22.04
2380 2012-11-01 00:16:02 22.65
2380 2012-11-02 00:15:32 23.11
20100 2012-10-30 00:15:38 35.21
20100 2012-10-31 00:15:48 37.07
20100 2012-11-01 00:15:49 38.17
20100 2012-11-02 00:15:19 38.97
20103 2012-10-30 10:27:34 57.98
20103 2012-10-31 12:24:42 60.83

必要な出力:

クエリは、Consumption 列が追加されたテーブルを生成する必要があります:

SN Date Value Consumption
2380 2012-10-30 00:15:51 21.01 0.00
2380 2012-10-31 00:31:03 22.04 1.03
2380 2012-11-01 00:16:02 22.65 0.61
2380 2012-11-02 00:15:32 23.11 0.46
20100 2012-10-30 00:15:38 35.21 0.00
20100 2012-10-31 00:15:48 37.07 1.86
20100 2012-11-01 00:15:49 38.17 1.10
20100 2012-11-02 00:15:19 38.97 0.80
20103 2012-10-30 10:27:34 57.98 0.00
20103 2012-10-31 12:24:42 60.83 2.85

SQL ソリューション:

次の SQL クエリは、ユーザー定義変数を利用して目的の結果を実現します。

<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) AS SQLVars
ORDER BY
    EL.SN,
    EL.Date;</code>
ログイン後にコピー

説明:

  • @lastSN および @lastValue: これらは 0 に初期化されるユーザー定義変数です。@lastSN は最後に処理された SN を追跡し、@lastValue は最後に処理された値を保存します。
  • IF(@lastSN = EL.SN, EL.Value - @lastValue, 0.00): この条件文は、現在の SN が前の SN と同じかどうかを確認します。 true の場合、消費量の差が計算されます。それ以外の場合は、消費量を 0.00 に設定します (各 SN の最初のエントリの場合)。
  • @lastSN := EL.SN, @lastValue := EL.Value: これらの割り当てにより、各行の処理後にユーザー定義変数が更新されます。
  • ORDER BY EL.SN, EL.Date: この句により、正確な差分計算のために行が正しい順序 (SN 順、次に日付順) で処理されることが保証されます。

このアプローチは、MySQL の変数処理機能を活用して、各 SN のエネルギー消費量の差を効率的に計算します。 ORDER BY の使用は、結果を正確にするために非常に重要です。

以上がMySQL の連続する行間のエネルギー消費量の差を SN によって計算する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート