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

MySQL查询未展示所有符合条件行 余额占比计算结果异常排查

问题原因

当前查询直接在SELECT子句中混用聚合函数sum(balance)与非聚合字段,既没有配置GROUP BY子句,也没有使用窗口函数划定聚合范围,数据库会将所有符合rate_type = "variable"条件的记录合并为单个分组做聚合计算,因此最终只会返回1行聚合结果,无法输出所有符合条件的贷款明细行。

修正SQL

要保留所有符合条件的明细行,同时计算同利率类型下各贷款余额的占比,需要使用窗口函数实现分区聚合,修正后的语句如下:

SELECT
  rate_type,
  loan_id,
  balance,
  balance / SUM(balance) OVER (PARTITION BY rate_type) AS balance_ratio
FROM submissions
WHERE rate_type = "variable"
逻辑说明
  • SUM(balance) OVER (PARTITION BY rate_type)为窗口函数写法,PARTITION BY rate_type表示按利率类型划分计算窗口,会为每一行匹配所属利率类型的总余额,不会压缩原明细结果的行数
  • 由于WHERE条件已经限定仅查询variable类型的贷款,因此计算出的balance_ratio就是单条贷款余额在可变利率贷款总余额中的占比
  • 如果需要输出直观的百分比格式,可以将占比计算逻辑替换为CONCAT(ROUND(balance / SUM(balance) OVER (PARTITION BY rate_type) * 100, 2), '%') AS balance_percentage,代码中的数字2代表保留2位小数,可根据业务需求自行调整。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:42:28