Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tính tổng, trừ và kết hợp của nhiều cột trong bảng mysql

Vì bạn có nhiều giao dịch, các khoản vay khác và các khoản thanh toán cho mỗi khách hàng, bạn không thể thực hiện JOIN ngay lập tức của các bảng với nhau vì nó sẽ gây ra sự sao chép các hàng, dẫn đến các giá trị không chính xác. Thay vào đó, chúng tôi SUM tất cả các giá trị trong mỗi bảng trên cơ sở khách hàng trước thực hiện JOIN . Ngoài ra, vì một số ứng dụng khách không có mục nhập trong mỗi bảng, bạn phải sử dụng LEFT JOIN s và COALESCE trên kết quả để các hàng trống không khiến SUM trở thành NULL . Truy vấn này sẽ cung cấp cho bạn kết quả bạn muốn:

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

Đầu ra (cho dữ liệu mẫu của bạn):

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

Demo trên 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. MYSQL:Làm cách nào tôi có thể tìm thấy 'ngày thứ hai cuối cùng' (Vấn đề về hiệu suất)

  2. Cách tiếp cận tình huống tiến thoái lưỡng nan:xuất đơn đặt hàng từ hệ thống magento cũ nhập vào magento mới, các ID chồng chéo

  3. Cách xem trạng thái và biến hệ thống trong MySQL Workbench bằng GUI

  4. máy chủ php, mysql đã biến mất

  5. Cách nhập cơ sở dữ liệu bằng dòng lệnh