paloma blog

NWエンジニアやってます。主に自宅環境のお遊びを書きます。Pythonもちょっと。タイトルは好きなカクテルから。

今更ながらSQLで2019年の支出まとめ

FY2020も終わりという事で、2019年の総支出を出してみたいと思います。
私の個人的な支出なので2019年1~12月を計算します。(今更ですが)
収入は少なくて恥ずかしいので載せません。

本シリーズ

家計簿付けるのカッタルイので、支払いはなるべくクレジット払いにしてトラッキング出来るようにしています。
データベースの勉強もかねてDBで計算しようと思い、支出の計算を始めました。

2019年の決済のCSVファイルはインポート済みです。

また、月次・半期事の集計スクリプトがあるんですが、下半期分が上手く動かないので今回は手動でやります。
INSERTをスクリプトでやるようにしたら動かなくなってしまいました。何故だ。

環境

WSL上のUbuntu18.04LTSとsqlite3です。

PS C:\Users\masashi> wsl lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic
PS C:\Users\masashi> wsl sqlite3 --version
3.22.0 2018-01-22 18:45:57 0c55d179733b46d8d0ba4d88e01a25e10677046ee3da1d5b1581e86726f2alt1

レコード数

出してもあまり意味無い値ですが出してみます。
カード切った回数ですね。

sqlite> SELECT count(*) FROM expenses
   ...> WHERE date BETWEEN '2019/01/01' and '2019/12/31';
406

このDBの中に現金払いの家賃と光熱費も入っているので2 * 12で24引いて、382回お買い物しました。
(where使った方がスマートでした)
1日1.04回の計算です。

総支出

では、昨年使った額は...

sqlite> SELECT sum(payment) FROM expenses
   ...> WHERE date BETWEEN '2019/01/01' and '2019/12/31';
2018217

201万8217円!

派手に使うような生活はしていないのですが、合計してみると意外と使ってる感じですね。

飲み会とかで現金払いもあってDBに突っ込めてない払いもあります。
昨年賃貸の更新もしたから実態は+10万くらいかな。

211万を月割りで17.6万です。
月17なら少なく見えますねw

項目ごと

節約する為にはなるべく固定の支出を減らすのが大切ですね。
ちょっと項目ごとに研鑽してみましょう。

Sweet Kava Kava

お気に入りのバーです。
引っ越してからいく回数が減っちゃいました。
癒しの場所なので無くせません。

sqlite> select sum(payment) from
   ...>  (select * from expenses where date BETWEEN '2019/01/01' and '2019/12/31')
   ...>  where contents = 'スウイ―ト カヴアカヴア';
32060

一年で30000は少ないですね。(節約的にはいいことですが)
引っ越す前は毎月これくらい使ってた気がします。

通信代

固定回線、キャリアの通話のみプラン、MVMO(データのみ)運用を出してみます。

sqlite> select sum(payment) from
   ...>  (select * from expenses where date BETWEEN '2019/01/01' and '2019/12/31')
   ...>  where contents like '%電話%' or contents like 'J:COM%' or contents = 'インターネットイニシアティブ';
117320

使用キャリア、プロバイダモロバレw
月一万行かないくらいですかね。
少なく出来たのはMVNOの貢献が大きいですね。

食費

スーパーで使った金額。
コンビニのsuica払いは別計算です。

sqlite> select sum(payment) from
   ...>  (select * from expenses where date BETWEEN '2019/01/01' and '2019/12/31')
   ...>  where contents = 'イトーヨーカ堂 (サインレス)' or contents = 'イオンリテール';
94567

スーパーは週一ペースなので食費にしては少ないですね。

suica

ほとんどコンビニですが電子マネーとして使えるところはこれで決済してます。

詳細はsuicaから拾わないと追えませんね。
suica用のDBも作成してJOINすればいいのかな。

sqlite> select sum(payment) from
   ...>  (select * from expenses where date BETWEEN '2019/01/01' and '2019/12/31')
   ...>  where contents = 'JR東日本モバイルSuica';
426250
  • 月割り

SQLで四則演算できるから打ってみます。

sqlite> select sum(payment) / 12 from
   ...>  (select * from expenses where date BETWEEN '2019/01/01' and '2019/12/31')
   ...>  where contents = 'JR東日本モバイルSuica';
35520

月3.5万…もう少し減らしたいですね。
コンビニでお酒も買うことが多いので酒屋とかで大瓶などを買うようにすればもう少し減らせそう。

むすび

という訳で2019年支出の振り返りでした。
この手のツールは沢山ありますが、自分で作ってみるのも面白いです。
自分のはカード会社のCSVを入れたらほとんど終わりですw

今回の手動集計では同じコマンドの羅列になってしまったので、いまいち面白くありませんでした。
かっこよく出力できるようにSQL分ももっと勉強しないと。
集計スクリプトはメンテしないとですね。
とりあえず目的は果たせたので良しとします。

今回のDBのレコードは少ないですがSQLは処理も早いし面白いですね。
将来的には家計簿OSSFirefly IIIと連携させて、収支までちゃんと計算するのが目標です。

来期も頑張りましょう!