Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Nilai Penggunaan dengan Menolak dari Baris Sebelumnya dalam MySQL?

Bagaimana untuk Mengira Nilai Penggunaan dengan Menolak dari Baris Sebelumnya dalam MySQL?

Patricia Arquette
Lepaskan: 2025-01-10 12:01:43
asal
612 orang telah melayarinya

How to Calculate Consumption Values by Subtracting from the Previous Row in MySQL?

Kira nilai penggunaan mengikut kumpulan dalam MySQL: berdasarkan perbezaan baris sebelumnya

Mengira perbezaan antara nilai berturut-turut berdasarkan faktor pengelompokan adalah tugas yang sangat biasa dalam MySQL. Katakan anda perlu mengira nilai penggunaan setiap nombor jujukan (SN) berdasarkan nilai sebelumnya.

Struktur data:

Data sampel mengandungi jadual EnergyLog dengan skema berikut:

<code>SN | 日期 | 值</code>
Salin selepas log masuk

Hasil yang dijangkakan:

Matlamatnya adalah untuk memanjangkan jadual untuk menambah lajur "penggunaan" yang mewakili perbezaan setiap SN berbanding dengan "nilai" baris sebelumnya.

Penyelesaian:

Pembolehubah MySQL menyediakan cara yang mudah untuk mencapai ini. Dengan menggunakan pembolehubah yang ditakrifkan pengguna (@lastSN dan @lastValue) kita boleh menjejaki SN dan nilai sebelumnya semasa melelaran melalui data.

-- 声明变量
SELECT
  EL.SN,
  EL.日期,
  EL.值,
  IF(@lastSN = EL.SN, EL.值 - @lastValue, 0.00) AS 消耗,
  @lastSN := EL.SN,
  @lastValue := EL.值
-- 来自表
FROM EnergyLog EL,
  (SELECT @lastSN := 0, @lastValue := 0) AS SQLVars
-- 按分组因子SN和日期排序
ORDER BY
  EL.SN,
  EL.日期;
Salin selepas log masuk

Penjelasan:

    Klausa
  • FROM mengisytiharkan pembolehubah (@lastSN dan @lastValue) dan memulakannya kepada 0.
  • Pertanyaan mengulangi jadual EnergyLog dalam susunan yang diingini (mengikut SN dan tarikh).
  • Ia membandingkan SN semasa dengan @lastSN. Jika terdapat padanan, hitung penggunaan (perbezaan) antara nilai semasa dan @lastValue sebelumnya.
  • Jika SN berbeza, anggap kumpulan baharu dan tetapkan semula penggunaan kepada 0.
  • Pembolehubah
  • @lastSN dan @lastValue akan dikemas kini kepada lelaran seterusnya.

Output:

SN 日期 消耗
2380 2012-10-30 21.01 0.00
2380 2012-10-31 22.04 1.03
2380 2012-11-01 22.65 0.61
2380 2012-11-02 23.11 0.46
20100 2012-10-30 35.21 0.00
20100 2012-10-31 37.07 1.86
20100 2012-11-01 38.17 1.10
20100 2012-11-02 38.97 0.80
20103 2012-10-30 57.98 0.00
20103 2012-10-31 60.83 2.85

Atas ialah kandungan terperinci Bagaimana untuk Mengira Nilai Penggunaan dengan Menolak dari Baris Sebelumnya dalam MySQL?. 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