HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📌
hkob's Notion
/
ℹ️
逆引きFormula 2.0
/
💾
Database storage
/
🔗
カテゴリ集計の具体例を知りたい(家計簿)
🔗

カテゴリ集計の具体例を知りたい(家計簿)

Status
Created by 2.0
関数説明
📓
filter
📓
map
📓
sum
📓
flat
📓
empty
属性名
合計、合計(食費)など
返り値
Integer
関連するもの
ℹ️
逆引きFormula 2.0
に戻る
Formula 2.0 ではフィルタを含めた集計がロールアップを使わずにできるようになりました。真っ先に思いついたのは家計簿でした。説明のために簡単なテンプレートを作ってみました。
  1. 個別会計データベースを作成します。
    1. 個別会計
      項目
      種別
      金額
      日付
      電気・ガス
      光熱費
      ¥15,300
      Jun 9, 2023
      外食
      食費
      ¥2,537
      Jun 29, 2023
      バス(往復)
      交通費
      ¥420
      Jun 29, 2023
      日用品
      日用品
      ¥520
      Jun 30, 2023
      食品
      食費
      ¥8,192
      Jul 1, 2023
      外食
      食費
      ¥1,520
      Jul 2, 2023
      電車
      交通費
      ¥840
      Jul 2, 2023
      日用品
      日用品
      ¥1,500
      Jul 4, 2023
      電気・ガス
      光熱費
      ¥16,800
      Jul 9, 2023
  1. 年月データベースを作成します。月は年のサブアイテムにしてみます。
    1. 年月
      Name
      年
      月一覧
      個別会計一覧
      合計
      合計(交通費)
      合計(光熱費)
      合計(日用品)
      合計(食費)
      6月
      2023年
      電気・ガス
      外食
      バス(往復)
      日用品
      7月
      2023年
      食品
      外食
      電車
      日用品
      電気・ガス
      2023年
      7月
      6月
  1. 個別会計を年月に結び付けます
    1. 個別会計
      項目
      種別
      金額
      日付
      月
      電気・ガス
      光熱費
      ¥15,300
      Jun 9, 2023
      6月
      バス(往復)
      交通費
      ¥420
      Jun 29, 2023
      6月
      外食
      食費
      ¥2,537
      Jun 29, 2023
      6月
      日用品
      日用品
      ¥520
      Jun 30, 2023
      6月
      食品
      食費
      ¥8,192
      Jul 1, 2023
      7月
      外食
      食費
      ¥1,520
      Jul 2, 2023
      7月
      電車
      交通費
      ¥840
      Jul 2, 2023
      7月
      日用品
      日用品
      ¥1,500
      Jul 4, 2023
      7月
      電気・ガス
      光熱費
      ¥16,800
      Jul 9, 2023
      7月
  1. これをロールアップを使わずに集計してみます。詳しくは
    🔗
    カテゴリごとに集計するには? (Formula 2.0)
    の記事を参考にしてください。
    1. 下位ページ一覧。自分の下にある個別会計一覧のページになります。月であれば対応する個別会計がそのままですが、年の場合にはすべての月の個別会計がすべてフラットな形で渡されます。
      1. /* 月一覧が空 -> 月 */ prop("月一覧").empty() ? /* 月であれば、そのまま個別会計一覧を返却 */ prop("個別会計一覧") : /* 年であれば、月ごとにその個別会計一覧をマッピング */ prop("月一覧").map(current.prop("個別会計一覧")) /* 個別会計一覧のリストのリスト -> フラット化したリスト */ .flat()
        →
        📓
        empty
        📓
        map
        📓
        flat
    2. 合計 (上で取得したページをすべて金額に変換し、それを総和します)
      1. /* 下位ページ一覧のすべてのページを金額に置き換え */ prop("下位ページ一覧").map(current.prop("金額")) /* それをすべて総和 */ .sum()
        →
        📓
        map
        📓
        sum
    3. 合計(食費)(金額に置き換える前に、種別が食費のものだけを絞り込みます)
      1. /* 下位ページのうち、種別が「食費」のものだけを絞り込み */ prop("下位ページ一覧").filter(current.prop("種別") == "食費") /* 絞り込んだページを金額に置き換え */ .map(current.prop("金額")) /* それをすべて総和 */ .sum()
        →
        📓
        filter
        📓
        map
        📓
        sum
    4. 合計(交通費)(金額に置き換える前に、種別が交通費のものだけを絞り込みます、残りも一緒なので省略)
      1. /* 下位ページのうち、種別が「食費」のものだけを絞り込み */ prop("下位ページ一覧").filter(current.prop("種別") == "交通費") /* 絞り込んだページを金額に置き換え */ .map(current.prop("金額")) /* それをすべて総和 */ .sum()
        →
        📓
        filter
        📓
        map
        📓
        sum
  1. 最終的にはこんな感じになりました。月ごと、年ごとに集計がされていることがわかります。
    1. 年月
      Name
      合計
      合計(食費)
      合計(交通費)
      合計(光熱費)
      合計(日用品)
      下位ページ一覧
      2023年
      7月
      6月
データベース置場
個別会計
年月