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

postgresウィンドウ関数を使用して会計ソフトウェアの残高を計算する方法

    select t.*, sum("In"-"Out") over(order by id) as balance
    from tbl t
    order by id
    

    フィドル: http://sqlfiddle.com/#!15/97dc5/2/0

    列名を「In」/「Out」に変更して、引用符で囲む必要がないようにすることを検討してください。 (予約語です)

    1人の顧客のみが必要な場合(customer_id =2):

    select t.*, sum("In"-"Out") over(order by id) as balance
    from tbl t
    where customer_id = 2
    order by id
    

    クエリが複数の顧客にまたがる場合で、各顧客で再開するランニングバランスが必要な場合は、次を使用できます。

    select t.*, sum("In"-"Out") over( partition by customer_id
                                      order by customer_id, id ) as balance_by_cust
    from tbl t
    order by customer_id, id
    



    1. 親テーブルと子テーブルからの行の削除

    2. 1つの状況を除いて、テーブルの更新を防ぐ方法

    3. Alembicを使用して列挙型フィールドを変更する

    4. ContentValuesを介してデータベースにタイムスタンプを挿入します