Mysql
 sql >> база данни >  >> RDS >> Mysql

Заявка за обобщено изчисление на една SQL таблица

Бих започнал, като напиша заявка, която работи, какво е едно споделяне на плащане. Тоест за payment_id , сумата от всички суми, разделена на броя хора, които трябва да плати. След това този резултат може да се присъедини обратно към оригиналните данни.

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

Ще бъде полезно да имате индекси и за двата (payment_id) и (payer_id) .

Ще бъде полезно да имате amount поле в тип данни DECIMAL, въпреки че трябва да обмислите какво искате да направите със закръгляването. (Общо плащане от 10,00 трябва да се раздели на три начина, по 3,33 всеки и след това какво искате да се случи с резервните 0,01?)




  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 база данни в MS SQL Server

  2. MySQL Left Join + Мин

  3. Йерархично маркиране в SQL

  4. mysql изберете записи, по-големи от 3 месеца

  5. Получаване на резултати от заявка от 2 db таблици, дори когато втората таблица няма съответстващи записи