PostgreSQL

PostgreSQL 同一日内の入出金データのグラフ化

投稿日:2019年11月17日 更新日:

最近は自分の口座の残高や入出金履歴などは銀行のオンランサイトのサービスにログインしてインターネット経由で確認することができるようになっています。今銀行サイトからダウンロードした口座の入出金データをグラフ化する際に少し困ったことがあったので、対処方法をメモします。

元データ

例えばこのような入出金と残高のデータがあるとします。

Dates : 日付
In Amount:入金履歴
Out Amount:出金履歴
Balance:残高

これをこのまま横軸:Dates、縦軸:Balanceで折れ線グラフを引くとこうなります。(可視化にはMetabaseというツールを使っています)

10/2にBalanceが40000を超えている?

プロットの数も合ってないし何かおかしい・・・

原因

これはBIツールが同じ日付のデータでgroup by して勝手にsumしてしまっているからです。当たり前といえば当たり前ですが、Datesのデータに同一のものがあることでこのようなことになってしまいます。

Datesが日付だけでなくTimestampならこれは回避できるのですが、残念ながら銀行からダウンロードできるcsvデータにはそこまでデータが残っておりませんでした。

対処法

元々のテーブル(account)に対して、シリアルのnumberを振り、それを利用して日付の後にシリアルを持つ文字列のDates_idというものを用意しました。

SQLは以下になります。

create view v_account as
	select
		cast(to_char(dates, 'yyyymmdd')||cast(row_number as varchar(10)) as varchar(18))as dates_id
		,*
	from
		(
		select
			row_number() over()
			,*
		from account
		) as T

出来上がったビュー。

これを横軸:Dates_id、縦軸:Balanceで再度描画すると、

それっぽくなりました。

-PostgreSQL

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

VSCodeからPostgreSQLへ接続してSQL発行まで

Contents1 目的2 環境3 Step1 : プラグインのインストール4 Step2 : データベースとの接続5 Step3 : SQLの発行6 補足 目的 VSCodeが優秀なので、VSCod …

横持ちデータを縦持ちへ変換するSQL

Contents1 目的2 環境3 使用データ4 縦持ちにするSQL 目的 BIなどでグラフを書く場合、データが横持になっているとうまくグラフ化できない、といったケースがあります。ということでSQLで …

PostgreSQL 入出金テーブルから月締め集計ビュー作成

入出金情報が入ったテーブルから月締めの集計ビューを作る方法を試します。 Contents1 元データ2 一次処理3 二次処理 元データ 以下のデータを対象にします。 select * from acc …

WindowsにPostgreSQLをインストールしてサーバー化

Contents1 目的2 環境3 PostgreSQLインストール4 外部接続許可設定5 Firewall開放6 接続テスト7 まとめ 目的 自分の身の回りのデータ(特に口座残高などのお金関連)を管 …

【PostgreSQL】縦持ちデータを横持ち変換し前年同月との比較をする

Contents1 目的2 元データ3 横持にするSQL4 結果5 まとめ 目的 システムから取り出したデータは正規化されており縦持ちのデータ構造が多いですが、口座の残高やカードの支払い金額など、前年 …

言語切り替え

カテゴリー