Mengira Penggunaan dalam MySQL: Menolak Nilai Baris Sebelumnya, Dikumpulkan mengikut SN
Panduan ini menunjukkan cara mengira penggunaan dengan membandingkan nilai berturut-turut dalam setiap kumpulan SN
dalam jadual MySQL. Data termasuk SN
(nombor siri) dan Value
lajur, mewakili ukuran dari semasa ke semasa. Matlamatnya adalah untuk mengira penggunaan bagi setiap SN
dengan menolak nilai sebelumnya daripada nilai semasa.
Berikut ialah pertanyaan MySQL yang memanfaatkan pembolehubah yang ditentukan pengguna untuk mencapai ini:
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;
Penjelasan Pertanyaan:
Permulaan Pembolehubah: Subkueri (SELECT @lastSN := NULL, @lastValue := NULL) AS SQLVars
memulakan pembolehubah yang ditentukan pengguna @lastSN
(untuk menjejaki SN
sebelumnya) dan @lastValue
(untuk menjejaki Value
sebelumnya) kepada NULL
. Menggunakan NULL
bukannya 0 mengendalikan baris pertama setiap kumpulan SN
dengan betul.
Pemprosesan Baris-demi-Baris: Pertanyaan utama berulang melalui jadual EnergyLog
(disebut sebagai EL
), dipesan oleh SN
dan Date
.
Pengiraan Penggunaan: Penyata IF
menyemak sama ada SN
(EL.SN
) semasa sepadan dengan SN
yang diproses sebelum ini (@lastSN
).
EL.Value - @lastValue
.SN
baharu), ia menetapkan penggunaan kepada 0.00.Kemas Kini Pembolehubah: @lastSN := EL.SN
dan @lastValue := EL.Value
kemas kini pembolehubah untuk perbandingan baris seterusnya.
Output: Pertanyaan mengembalikan SN
, Date
, Value
dan dikira Consumption
untuk setiap baris.
Pendekatan ini mengira penggunaan dalam setiap kumpulan SN
dengan cekap menggunakan satu pertanyaan, menghapuskan keperluan untuk subkueri atau gabungan yang lebih kompleks. Penggunaan pembolehubah yang ditentukan pengguna menjadikan pengiraan ringkas dan berprestasi.
Atas ialah kandungan terperinci Bagaimana untuk Mengira Penggunaan dengan Menolak Nilai Baris Sebelumnya dalam MySQL, Dikumpulkan oleh SN?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!