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

SQLite中按LotId过滤的累计求和视图实现问询

按LotId分组计算累计余额的视图改造

我有一张仅允许追加写入的Operation表,包含以下字段:

  • Id:INTEGER类型,自增主键
  • LotId:INTEGER类型,外键
  • Amount:INTEGER类型

为了在插入新行时实时反映余额,我原本创建了Ledger视图,语句如下:

CREATE VIEW IF NOT EXISTS "Ledger" ("OperationId", "Balance") 
AS SELECT "Id", SUM("Amount") OVER (ROWS UNBOUNDED PRECEDING) 
FROM "Operation";

但当前视图是对所有行全局累计求和,现在需要修改为按LotId分组,仅累加同LotId下的Amount值,最终要实现如下效果:

Operation表数据

IdLotIdAmount
1110
225
31-7

期望的Ledger视图结果

OperationIdLotIdBalance
1110
225
313

修改后的视图创建语句

只需在窗口函数的OVER子句中添加PARTITION BY "LotId",同时补充排序逻辑和必要字段,实现按LotId分组累计:

CREATE VIEW IF NOT EXISTS "Ledger" ("OperationId", "LotId", "Balance") 
AS SELECT 
    "Id" AS "OperationId",
    "LotId",
    SUM("Amount") OVER (PARTITION BY "LotId" ORDER BY "Id" ROWS UNBOUNDED PRECEDING) AS "Balance"
FROM "Operation";

关键说明

  • PARTITION BY "LotId":将数据按LotId分割为独立分组,每个分组内单独计算累计和
  • ORDER BY "Id":确保按Operation的自增Id顺序累加(仅追加表的Id顺序即插入顺序,符合余额计算的时序逻辑)
  • 新增LotId字段到视图中,让结果与示例输出匹配,逻辑更清晰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:37:42