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

使用sum() over(partition by)逐行计算值获取账户期末余额问题求助

SQL计算账户期末余额问题解决方案

错误原因

  • 你编写的查询混用了GROUP BY分组聚合与窗口函数,逻辑冲突:GROUP BY account_id会将同账号的所有行合并为1行结果,而窗口函数默认会在每一行都返回对应分区的聚合结果,二者搭配没有意义,还会导致语法报错或结果不符合预期。
  • 你需求中的期末余额本质是每个account_id下所有change字段的累加和,用普通分组聚合即可实现,无需使用窗口函数。

正确实现方式

方案1:普通分组聚合(推荐,性能更优)

直接按账号分组求和即可得到每个账号的期末余额:

SELECT account_id, SUM(change) AS 期末余额
FROM TableX
GROUP BY account_id;

方案2:窗口函数实现

如果需要保留原表所有行的同时展示对应账号的期末余额,去掉GROUP BY即可:

SELECT *, SUM(change) OVER(PARTITION BY account_id) AS 期末余额
FROM TableX;

如果仅需要每个账号一行期末余额结果,使用窗口函数时增加去重逻辑即可:

SELECT DISTINCT account_id, SUM(change) OVER(PARTITION BY account_id) AS 期末余额
FROM TableX;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 20:36:10