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

Truy vấn tính toán tổng hợp trên một bảng SQL

Tôi sẽ bắt đầu bằng cách viết một truy vấn hoạt động như thế nào là một phần của khoản thanh toán. Đó là, theo payment_id , tổng của tất cả số tiền, chia cho số người mà nó cần phải trả. Sau đó, kết quả đó có thể được kết hợp trở lại dữ liệu ban đầu.

SELECT
  payers_payments.payer_id,
  SUM(payers_payments.amount                      )   AS total_paid,
  SUM(payers_payments.pays * payments.single_share)   AS fair_share
FROM
  payers_payments
INNER JOIN
(
  SELECT
    payment_id,
    SUM(amount) / SUM(pays)   AS single_share
  FROM
    payers_payments
  GROUP BY
    payment_id
)
  AS payments
    ON  payers_payments.payment_id = payments.payment_id
GROUP BY
   payers_payments.payer_id

Sẽ có lợi nếu có các chỉ mục trên cả (payment_id)(payer_id) .

Sẽ có lợi nếu có số tiền amount trong kiểu dữ liệu DECIMAL, mặc dù bạn cần xem xét những gì bạn muốn làm với làm tròn. (Tổng số tiền thanh toán là 10,00 cần được chia thành ba cách, mỗi cách là 3,33 và sau đó bạn muốn điều gì xảy ra với 0,01 tiền dự phòng?)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách chọn cột trong bảng bằng cách tạo hàng trong bảng khác trong MySQL

  2. Đổi tên thủ tục mysql

  3. Nhận dữ liệu bổ sung vào lựa chọn thả xuống biểu mẫu django

  4. Nhận tất cả bản ghi của Cấp độ 1 chỉ có số lượng giá trị được chỉ định trong Cấp độ 2

  5. Chọn các giá trị được nhóm thành một số nhận dạng cụ thể