Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menolak Nilai Baris Sebelumnya dalam Pertanyaan MySQL Berkumpulan?

Bagaimana untuk Menolak Nilai Baris Sebelumnya dalam Pertanyaan MySQL Berkumpulan?

DDD
DDDasal
2025-01-10 12:37:42850semak imbas

How to Subtract the Previous Row's Value in a Grouped MySQL Query?

MySQL: Tolak nilai baris sebelumnya dalam pertanyaan berkumpulan

Menolak nilai daripada baris sebelumnya ialah tugas biasa dalam analisis data, tetapi boleh memberikan cabaran apabila bekerja dengan data terkumpul. MySQL menyediakan kaedah umum untuk menyelesaikan situasi ini.

Untuk mengira perbezaan dalam penggunaan tenaga antara baris berturut-turut bagi setiap SN, kami menggunakan pembolehubah sistem MySQL (@lastSN dan @lastValue) dan pertanyaan yang membuat satu laluan ke atas data:

<code class="language-sql">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 := 0, @lastValue := 0) SQLVars
ORDER BY
  EL.SN, EL.Date;</code>

Pertanyaan berfungsi seperti berikut:

  1. Isytiharkan pembolehubah MySQL @lastSN dan @lastValue untuk menjejak SN dan Nilai sebelumnya.
  2. Untuk setiap baris dalam jadual EnergyLog, bandingkan SN semasa dengan @lastSN.
  3. Jika SN sepadan, gunakan IF() untuk mengira perbezaan tenaga. Jika tidak, tetapkan Penggunaan kepada 0.
  4. Selepas perbandingan, kemas kini @lastSN dan @lastValue dengan nilai baris semasa.
  5. Isih hasil mengikut SN dan Tarikh untuk memastikan pengiraan penggunaan tenaga yang betul.

Dengan menggunakan pembolehubah MySQL, kami melaksanakan penyelesaian yang mudah dan cekap untuk mengira penggunaan tenaga berdasarkan nilai sebelumnya dalam pertanyaan berkumpulan.

Atas ialah kandungan terperinci Bagaimana untuk Menolak Nilai Baris Sebelumnya dalam Pertanyaan MySQL Berkumpulan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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