Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kurangi nilai dua baris dalam kolom yang sama menggunakan grup Mysql dengan ID

Tanggal Anda salah. Ketika Anda memesan berdasarkan kolom ini, Anda memesan berdasarkan hari terlebih dahulu. Pemesanan yang tepat adalah tahun-bulan-hari. Gunakan tipe data, waktu, atau stempel waktu yang tepat. Untuk melakukannya, Anda dapat melakukan hal berikut:

alter table table1 add column d datetime;
update table1 set d = str_to_date(`Date`, '%d-%m-%Y %H:%i');
alter table table1 drop column `Date`;

Kueri untuk mendapatkan hasil yang Anda inginkan adalah:

SELECT ID, d, Value,
       IF(@ID=ID, Value - @prevV, 'N/A') AS diff,
       @row_number:=CASE WHEN @ID=ID THEN @row_number+1 ELSE 1 END AS row_number,

       @prevV := Value,
       @ID:=ID AS ID
FROM table1
, (SELECT @row_number:=0, @ID:='', @prevV := NULL) AS t 
ORDER BY id, d;

Yang harus Anda lakukan adalah menambahkan variabel lain untuk menyimpan nilai dari baris sebelumnya.

  • lihat ini bekerja langsung di sqlfiddle
  • ini sqlfiddle lain untuk menampilkan apa yang terjadi jika Anda memiliki 3 baris per ID



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PEMBARUAN MYSQL dengan IN dan Subquery

  2. Tabel Kustom Wordpress atau Jenis Posting Kustom?

  3. Mentransfer data dari PostgreSQL ke MySQL

  4. Kembalikan semua baris dengan nilai MAX dalam SQL?

  5. MySQL Pilih Baris N Teratas