| 事件 | 获取/消耗/过期/调整 |
|---|---|
| 余额 | 快照或累计推导 |
| 勾稽 | 末态余额 = 流水净额 |
余额推导
余额推导
SELECT user_id, sum(CASE WHEN type = 'earn' THEN pts ELSE -pts END) AS balance
FROM fact_points_ledger
GROUP BY user_id;积分过期用事件表达(负向变动),不要直接改历史获取记录。
积分用流水事实(获取/消耗/过期/调整)记录每次变动,余额由流水推导或快照物化;两类数据要能勾稽验证。
| 事件 | 获取/消耗/过期/调整 |
|---|---|
| 余额 | 快照或累计推导 |
| 勾稽 | 末态余额 = 流水净额 |
SELECT user_id, sum(CASE WHEN type = 'earn' THEN pts ELSE -pts END) AS balance
FROM fact_points_ledger
GROUP BY user_id;