Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL - Mengurangi nilai dari baris sebelumnya, kelompokkan menurut

Bekerja dengan variabel MySQL sangat bagus, seperti penugasan variabel program sebaris. Pertama, klausa FROM "mendeklarasikan" variabel @ untuk Anda, secara default kosong. Kemudian kueri rekaman dalam urutan yang diharapkan seperti yang Anda inginkan. Itu membuat satu kali melewati data alih-alih melalui subquery berulang yang bisa memakan waktu lama.

Untuk setiap baris yang dibaca, bandingkan @lastSN dengan SN dari record saat ini. Jika berbeda, selalu kembalikan 0. Jika sama, hitung selisih sederhananya. Hanya SETELAH perbandingan itu selesai, setel @lastSN dan @lastValue sama dengan catatan saat ini untuk perbandingan catatan berikutnya.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cara menghitung kesamaan antara dua string di MYSQL

  2. Replikasi MySQL dan Failover Berbasis GTID - Menyelami Transaksi yang Salah

  3. Cara Mendapatkan Jumlah Bit dalam String di MySQL – BIT_LENGTH()

  4. Bagaimana saya bisa melihat kueri MySQL langsung?

  5. Bagaimana cara melakukan penyisipan massal di mySQL menggunakan node.js