sql >> データベース >  >> RDS >> Mysql

アカウントの残高を計算するためのSQLクエリ

    基本的に、tdebits間の外積を計算しています。 およびtcredits つまり、tdebitsの各行に対して tcreditsのすべての行を繰り返し処理しています 。 accountsに参加する理由もありません (to_account_idを除く およびfrom_account_id 外部キーではありません)。

    トランザクションを1回パスオーバーするだけで、金額がクレジットかデビットかを知る必要があります。

    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
    

    アカウントが自分自身に転送できる場合は、t.to_account_id <> t.from_account_idを追加します 。



    1. 小数点以下2桁の日数を返すTSQLDateDiff

    2. 収集方法:OracleデータベースのEXISTS関数

    3. SQLServerアラートを設定するための4つのヒント

    4. oracleより高速なページングクエリ