sql >> データベース >  >> RDS >> Mysql

MySQL-前の行から値を減算し、group by

    インラインプログラム変数の割り当てのように、MySQL変数の操作は素晴らしいです。まず、FROM句は@変数を「宣言」し、デフォルトで空白になります。次に、必要な順序でレコードをクエリします。時間がかかる可能性のあるサブクエリを繰り返す代わりに、データを1回通過します。

    読み取られた行ごとに、@lastSNを現在のレコードのSNと比較します。異なる場合は、常に0を返します。同じである場合は、単純な差を計算します。比較が行われた後でのみ、@ lastSNと@lastValueを、次のレコード比較のために現在のレコードと同じに設定します。

    select
          EL.SN,
          EL.Date,
          EL.Value, --remove duplicate alias
          if( @lastSN = EL.SN, EL.Value - @lastValue, 0000.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. pg-promiseを使用した複数行の挿入

    2. postgresで自動インクリメントカウンターをリセットする

    3. 演算子が存在しません:json =json

    4. Windows上のPython3でMySQLに接続するにはどうすればよいですか?