sql >> Database >  >> RDS >> Mysql

SQL-query voor het berekenen van het rekeningsaldo

U berekent in feite het kruisproduct tussen een tdebits en tcredits , d.w.z. voor elke rij in tdebits je herhaalt alle rijen in tcredits . Er is ook geen reden om lid te worden van accounts (tenzij to_account_id en from_account_id zijn geen externe sleutels).

U hoeft slechts één overboekingstransactie uit te voeren en u hoeft alleen te weten of het bedrag een credit- of debetbedrag is.

SELECT SUM(CASE WHEN t.to_account_id = $1 THEN t.amount ELSE -t.amount END) AS amount
FROM transactions AS t
WHERE (t.to_account_id = $1 OR t.from_account_id = $1)
  AND t.succeed = true

Als een account naar zichzelf kan worden overgezet, voeg dan een t.to_account_id <> t.from_account_id toe .



  1. Gezondheidscontrole op Exadata met Exachk Utility

  2. SqlDataAdapter gebruiken om een ​​rij in te voegen

  3. Querybuilder voegt geen tijdstempels in

  4. Groeperen op waarden die op volgorde staan