Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Penggunaan dengan Menolak Nilai Baris Sebelumnya dalam MySQL, Dikumpulkan oleh SN?

Bagaimana untuk Mengira Penggunaan dengan Menolak Nilai Baris Sebelumnya dalam MySQL, Dikumpulkan oleh SN?

Patricia Arquette
Lepaskan: 2025-01-10 11:41:42
asal
179 orang telah melayarinya

How to Calculate Consumption by Subtracting Previous Row Values in MySQL, Grouped by SN?

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;
Salin selepas log masuk

Penjelasan Pertanyaan:

  1. 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.

  2. Pemprosesan Baris-demi-Baris: Pertanyaan utama berulang melalui jadual EnergyLog (disebut sebagai EL), dipesan oleh SN dan Date.

  3. Pengiraan Penggunaan: Penyata IF menyemak sama ada SN (EL.SN) semasa sepadan dengan SN yang diproses sebelum ini (@lastSN).

    • Jika ia sepadan, ia mengira penggunaan sebagai EL.Value - @lastValue.
    • Jika mereka tidak sepadan (bermaksud kumpulan SN baharu), ia menetapkan penggunaan kepada 0.00.
  4. Kemas Kini Pembolehubah: @lastSN := EL.SN dan @lastValue := EL.Value kemas kini pembolehubah untuk perbandingan baris seterusnya.

  5. 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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan