sql >> Databasteknik >  >> RDS >> Mysql

SQL-fråga för beräkning av kontosaldo

Du beräknar i princip korsprodukten mellan en tdebits och tcredits , d.v.s. för varje rad i tdebits du itererar över alla rader i tcredits . Det finns heller ingen anledning att gå med i accounts (såvida inte to_account_id och from_account_id är inte främmande nycklar).

Du behöver bara göra en övergångstransaktion och du behöver bara veta om beloppet är en kredit eller debet.

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

Om ett konto kan överföras till sig självt, lägg till ett t.to_account_id <> t.from_account_id .



  1. Kompilera PL/Proxy med PostgresPlus Advance Server 9.1

  2. Laravel 4:Hur tillämpar man ett WHERE-villkor på alla frågor i en vältalig klass?

  3. Lagra vanlig fråga som kolumn?

  4. Parameter Sniffing (eller Spoofing) i SQL Server