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

使用SELECT COUNT DISTINCT统计关联父账户的子账户数量异常排查

问题修复:统计父账户对应的子账户数量

你的SQL存在两个关键问题,导致统计结果和实际数据不符:

  • 分组字段错误:表中存储账户名称的字段是AccountName,但你写了GROUP BY Name,字段名不匹配,要么触发语法错误,要么导致分组逻辑完全错误。
  • 统计逻辑错误:COUNT(DISTINCT ParentNum)是统计不同父账户编号的数量,而我们需要的是每个父账户下的子账户总数,应该统计每个ParentNum对应的子账户记录数,不需要对父编号去重。

正确的SQL写法

写法一:自连接关联父账户

通过自连接将父账户与子账户关联,直接统计每个父账户的子账户数量:

SELECT parent.AccountName, COUNT(child.AccountName) AS ChildCount
FROM Accounts parent
LEFT JOIN Accounts child ON parent.AccountNum = child.ParentNum
WHERE parent.ParentNum IS NULL -- 仅筛选父账户(ParentNum为NULL的是父账户)
GROUP BY parent.AccountName
ORDER BY ChildCount DESC;

写法二:先统计子账户数再关联父账户

先从子账户数据中按父编号分组统计数量,再关联父账户表获取对应的账户名称:

SELECT parent.AccountName, child_stats.ChildCount
FROM Accounts parent
JOIN (
    SELECT ParentNum, COUNT(*) AS ChildCount
    FROM Accounts
    WHERE ParentNum IS NOT NULL
    GROUP BY ParentNum
) child_stats ON parent.AccountNum = child_stats.ParentNum
WHERE parent.ParentNum IS NULL
ORDER BY ChildCount DESC;

预期输出结果

根据你提供的表数据,执行正确SQL后会得到符合实际的统计结果:

AccountNameChildCount
Alpha3
Gamma1
Zeta1
Beta0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 03:07:43