You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SQLite中实现指定年份的月度收支统计?

SQLite实现指定年份月度收支统计方案

我来帮你搞定这个月度收支统计的需求,直接上可落地的实现方案:

核心SQL查询语句

针对你的表结构和需求,我们可以用条件聚合配合SQLite的日期函数来实现分组统计,SQL代码如下:

SELECT
    strftime('%Y-%m', date) AS year_month,
    SUM(CASE WHEN type = 'income' THEN amount ELSE 0 END) AS income,
    SUM(CASE WHEN type = 'spending' THEN amount ELSE 0 END) AS spending
FROM
    your_table_name -- 替换成你的实际表名
WHERE
    strftime('%Y', date) = '2020' -- 替换成你要查询的目标年份
GROUP BY
    year_month
ORDER BY
    year_month DESC;

语句细节解释

  • 日期格式化:用strftime('%Y-%m', date)把date字段转换成YYYY-MM格式,作为分组的唯一标识
  • 条件求和:
    • 总收入:只累加type为income的amount值,无匹配项时加0
    • 总支出:同理,只累加type为spending的amount值
  • 年份筛选:通过strftime('%Y', date) = '目标年份'精准过滤指定年份的数据
  • 排序逻辑:按year_month倒序排列,和你给出的示例输出顺序完全一致

测试数据验证

用你提供的5条测试数据执行上述SQL(假设表名为records),会得到如下结构化结果:

year_monthincomespending
2020-119535
2020-09200-120
2020-08880

生成目标JSON格式输出

如果需要直接得到你示例中的键值对JSON格式,可以在SQLite命令行中执行以下操作:

# 切换到JSON输出模式
sqlite> .mode json
# 将结果输出到文件(可选)
sqlite> .output monthly_stats.json
# 执行查询语句
sqlite> SELECT ...; -- 上面的完整SQL语句
# 恢复输出到控制台
sqlite> .output stdout

生成的monthly_stats.json会是数组格式,你可以在应用层(比如Python/Java)轻松转换为你要的键值对结构,或者用SQLite的JSON函数进一步处理,但应用层转换会更灵活。

内容的提问来源于stack exchange,提问作者Answer_K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 21:09:06