Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengira Perbezaan Nilai Baris dalam Jadual SQL?

Bagaimana untuk Mengira Perbezaan Nilai Baris dalam Jadual SQL?

Susan Sarandon
Lepaskan: 2025-01-10 15:18:46
asal
172 orang telah melayarinya

How to Calculate Row Value Differences in a SQL Table?

Mengira Perbezaan Nilai Baris dengan Cekap dalam Jadual SQL

Panduan ini menunjukkan dua kaedah untuk mengira perbezaan antara nilai baris berturut-turut dalam jadual SQL, memfokuskan pada struktur jadual bukan urutan. Kaedah pertama sesuai untuk semua versi SQL, manakala yang kedua menggunakan fungsi tetingkap untuk prestasi yang lebih baik dalam SQL Server 2012 dan kemudian.

Kaedah 1: Sertai Sendiri (Semua Versi SQL)

Pendekatan ini menggunakan LEFT JOIN untuk membandingkan setiap baris dengan baris berikutnya berdasarkan pengecam baris (rowInt dalam contoh ini).

<code class="language-sql">SELECT
   current.rowInt,
   current.Value,
   ISNULL(next.Value, 0) - current.Value AS ValueDifference
FROM
   sourceTable AS current
LEFT JOIN
   sourceTable AS next
      ON next.rowInt = (SELECT MIN(rowInt) FROM sourceTable WHERE rowInt > current.rowInt)</code>
Salin selepas log masuk

Fungsi ISNULL mengendalikan kes apabila baris tidak mempunyai pengganti (baris terakhir), memberikan perbezaan 0 untuk mengelakkan nilai NULL.

Kaedah 2: Fungsi Tetingkap LEAD() (SQL Server 2012 dan lebih baru)

Untuk kecekapan dipertingkatkan dalam versi SQL Server yang lebih baharu, fungsi tetingkap LEAD() menyediakan penyelesaian yang lebih diperkemas:

<code class="language-sql">SELECT
  RowInt,
  Value,
  LEAD(Value, 1, 0) OVER (ORDER BY RowInt) - Value AS ValueDifference
FROM
  sourceTable</code>
Salin selepas log masuk

LEAD(Value, 1, 0) mendapatkan semula nilai dari baris seterusnya (offset 1), lalai kepada 0 jika tiada baris seterusnya wujud. Ini secara langsung mengira perbezaan, menghapuskan keperluan untuk menyertai sendiri. Kaedah ini biasanya lebih pantas dan lebih mudah dibaca.

Atas ialah kandungan terperinci Bagaimana untuk Mengira Perbezaan Nilai Baris dalam Jadual SQL?. 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