记账只是
INSERT INTO流水表,资产负债表才是SELECT net_worth FROM snapshot
01
我从2019年开始记账。
每笔外卖、每杯奶茶、每次打车,都老老实实记在 App 里。月底还会跑个 SUM(expense) GROUP BY category,看看钱花哪了。
5年下来,SELECT SUM(savings) FROM years 返回了 20 万。
看起来还不错,对吧?
直到有一天,朋友问我:“你家净资产是多少?”
我瞬间 NULL 了。
我知道每月 income - expense = saving,知道基金账户浮亏 8000,知道房贷还剩 80 万……但这些数据分散在各个“数据源”里:银行 App、基金 App、房产中介估值、信用卡账单。从来没有做过一次 JOIN。
那天晚上,我决定执行一次全量查询。
02
我打开一个空白文档,定义了两个数组:
javascript
const assets = [
{ name: '活期存款', amount: 50000 },
{ name: '定期存款', amount: 150000 },
{ name: '基金', amount: 42000 }, // 已扣除亏损
{ name: '房产(市值)', amount: 3000000 }
];
const liabilities = [
{ name: '房贷余额', amount: 800000 },
{ name: '信用卡待还', amount: 12000 }
];
然后执行:
javascript
const netWorth = assets.reduce((sum, a) => sum + a.amount, 0)
- liabilities.reduce((sum, l) => sum + l.amount, 0);
console.log(netWorth); // 2430000
243 万?我反复跑了三次,确认没有 bug。
可为什么我每个月还是紧巴巴的?这不科学。
03
后来我明白了:记账系统只记录了 transaction log,而资产负债表才是 database snapshot。
记账能回答:SELECT * FROM cash_flow WHERE month = '2026-03'
但它回答不了:
SELECT net_worth FROM snapshot ORDER BY date DESC LIMIT 1SELECT asset_allocation_ratio(你的钱是怎么分布的)SELECT liquidity_ratio(有多少钱能随时调用)
我虽然净资产 243 万,但其中 220 万是房产(非流动资产),真正能用于投资或应急的流动资产只有 9 万。
而我的朋友小B,月薪跟我差不多,他的数据是这样的:
javascript
const assets_B = [
{ name: '活期', amount: 30000 },
{ name: '定期', amount: 70000 },
{ name: '基金股票', amount: 300000 }
];
const liabilities_B = []; // 无负债
// netWorth_B = 400000
论净资产,他 40 万 < 我 243 万。但论 流动比率 和 资产配置灵活性,他完胜。
只看存款余额,我比他“有钱”;看资产负债表,他比我从容。
这就是资产负债表的价值——它不只看 SUM(assets),还看你的资产结构、负债率、流动性。
04
从那以后,我建了一张 monthly_snapshot 表,每月底执行一次 INSERT:
sql
CREATE TABLE monthly_snapshot (
snapshot_date DATE PRIMARY KEY,
net_worth DECIMAL(12,2),
liquidity_ratio DECIMAL(5,4), -- 流动资产 / 总资产
housing_ratio DECIMAL(5,4), -- 房产 / 总资产
debt_ratio DECIMAL(5,4) -- 负债 / 总资产
);
每月底,我会问自己三个问题,并用 SQL 查出答案:
- 净值变化
SELECT net_worth - LAG(net_worth) OVER (ORDER BY snapshot_date) AS delta FROM monthly_snapshot;
涨跌原因是什么?收入增加?基金反弹?还是房贷还了一部分? - 配置偏离
我的 target 是:房产 ≤ 50%,基金 ≥ 30%,存款 ≥ 20%。
实际查询:SELECT housing_ratio FROM monthly_snapshot WHERE snapshot_date = CURRENT_DATE;
如果超过 55%,触发 rebalance 信号。 - 流动性安全
SELECT liquidity_ratio FROM monthly_snapshot;
流动资产 < 6 个月生活费?那就先别投资,补安全垫。
这些分析,记账 App 不会帮你做。但你的 monthly_snapshot 表可以。
05
如果你也想给自己的财务系统建一张 snapshot 表,但不想手写 SQL 或维护 Excel,可以用现成的工具。
微信搜索「ReFi理财」小程序,里面有个“家庭资产负债表”模块:
- 前端 UI 帮你
INSERT INTO assets/liabilities - 后端自动
SELECT net_worth, allocation_ratio - 每月对比,自动
diff净值变化 - 支持设置 target 比例,超出阈值自动提醒
不需要写一行代码,但底层逻辑和你自己建表一模一样。
👉 微信搜索「ReFi理财」→ 家庭资产负债表 → 开始 CREATE TABLE
最后
记账是 tail -f transaction.log,资产负债表是 SELECT * FROM snapshot。
两个都有,你才真正拥有家庭财务的可观测性。
今天花 1 小时,给你的财务系统建一个初始快照。然后每月 UPDATE 一次。
你会发现,对钱的掌控感,和写代码一样——可测量、可复盘、可优化。
本文为真实经历改编,不构成投资建议。欢迎评论区讨论你的“理财数据结构”。