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

SQL查询如何统计每张发票对应的唯一账号数量

问题根因

你当前查询的GROUP BY同时用了gl.source和gl.account_number作为分组键,返回结果的粒度是「单张发票+单个关联账号」,每个分组仅对应1个唯一账号,因此计数值恒为1,无法统计单张发票关联的账号总量。

修正写法

场景1:仅需返回发票维度的总账号数

不需要返回明细账号的话,直接把gl.account_number从分组字段、返回字段中移除,建议用COUNT(DISTINCT)做去重计数,避免同账号重复关联导致统计偏差:

SELECT 
    gl.source,
    COUNT(DISTINCT gl.account_number) AS 'Count of Invoices'
FROM 
    gl
WHERE 
    gl.source = *invoice number*
GROUP BY 
    gl.source

执行后关联5个账号的发票,对应计数值就会正确显示为5。

场景2:需要同时保留账号明细+发票总账号数

如果要在结果里同时展示每个关联账号的明细,又要每行附带当前发票的总账号计数,用窗口函数实现即可,不需要调整分组粒度:

SELECT 
    gl.source,
    COUNT(DISTINCT gl.account_number) OVER (PARTITION BY gl.source) AS 'Count of Invoices',
    gl.account_number
FROM 
    gl
WHERE 
    gl.source = *invoice number*

提示:如果确认业务中不存在单发票对同账号的重复关联记录,可以省略DISTINCT关键字,直接用COUNT(gl.account_number)统计,查询效率会更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 20:33:40