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

<code class="language-sql">-- 声明变量
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.日期;</code>
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!

sumber:php.cn
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