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

Jumlahkan, Kurangi, dan Gabungkan beberapa kolom tabel mysql

Karena Anda memiliki banyak transaksi, jumlah pinjaman lain, dan pembayaran per pelanggan, Anda tidak dapat melakukan JOIN langsung tabel satu sama lain karena akan menyebabkan replikasi baris, menghasilkan nilai yang salah. Sebagai gantinya, kami SUM semua nilai dalam setiap tabel berdasarkan klien sebelum melakukan JOIN . Selain itu, karena beberapa klien tidak memiliki entri di setiap tabel, Anda harus menggunakan LEFT JOIN s dan COALESCE pada hasil sehingga baris kosong tidak menyebabkan SUM menjadi NULL . Kueri ini akan memberikan hasil yang Anda inginkan:

SELECT c.id, c.name,
       COALESCE(t.transactions, 0) + COALESCE(o.amounts, 0) - COALESCE(p.payments, 0) AS amount
FROM client c
LEFT JOIN (SELECT id, SUM(load_amount) + SUM(additional) AS transactions
           FROM transaction
           GROUP BY id) t on t.id = c.id
LEFT JOIN (SELECT id, SUM(amount) AS amounts
           FROM other_loan
           GROUP BY id) o ON o.id = c.id
LEFT JOIN (SELECT id, SUM(payment_amount) AS payments
           FROM payment
           GROUP BY id) p ON p.id = c.id
GROUP BY c.id

Output (untuk data sampel Anda):

id  name        amount
1   Robin       8718
2   Cinderella  21
3   Leomar      0

Demo di SQLFiddle




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. php + mysql + google map

  2. Mengatur objek yang dikembalikan dari PDO di kelasnya sendiri

  3. MySQL INSERT INTO ... NILAI dan PILIH

  4. tidak dapat mengunggah gambar di MySQL yang terhubung dengan mesin aplikasi google cloud di Laravel

  5. MYSQL - Satu Kolom Direferensikan ke Beberapa Tabel