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

SQL实现各付款方逾期超90天应收账款占总金额比例计算问题

问题修正与实现方案

你原来的SQL存在几处语法逻辑错误:

  • 聚合函数sum()前不需要加表别名前缀t1.
  • 列名包含空格、特殊字符时需要用对应数据库的标识符包裹(MySQL用反引号`、SQL Server用方括号[]、Oracle用双引号")
  • 子查询统计范围不符合需求,且存在语法错误未闭合
  • 过滤条件的列名没有按规范处理空格

以下是按你需求实现的可运行SQL,用窗口函数实现性能更优,同时保留原始行维度展示每个payor对应的超90天应收账款占比:

-- 以下为MySQL语法示例,其他数据库仅需修改列名包裹符即可
SELECT 
    payor,
    ar_date_string,
    `AR range`,
    `days out`,
    amount,
    -- 按payor维度统计超90天总额 / 全量应收账款总金额,得到百分比
    ROUND(
        SUM(IF(`days out`>90, amount, 0)) OVER(PARTITION BY payor) 
        / SUM(amount) OVER() * 100,
        2
    ) AS overdue_90d_percent
FROM t1

如果仅需要输出超90天的历史应收账款行,可追加WHERE过滤条件:

SELECT 
    payor,
    ar_date_string,
    `AR range`,
    `days out`,
    amount,
    ROUND(
        SUM(amount) OVER(PARTITION BY payor) 
        / SUM(amount) OVER() * 100,
        2
    ) AS overdue_90d_percent
FROM t1
WHERE `AR range` = 'historical AR' AND `days out` > 90

样例数据计算结果说明

你提供的样例数据总金额为330美元:

  • lowes超90天金额为100美元,对应占比为30.30%
  • jcp超90天金额为50美元,对应占比为15.15%

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 15:57:03