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

MySQL中Group By与Count查询问题:求修正错误SQL统计机构数

问题分析与SQL修正

原SQL的问题

  • 分组逻辑偏离需求:原SQL按G.fac(院系)和L.org(机构)分组,这是在统计「每个机构下每个院系的关联记录数」,完全不符合我们需要的「统计每个教师的授课院系数量」的目标。
  • 聚合统计对象错误:HAVING COUNT(G.fac) > 1在错误分组下,统计的是当前组内的记录条数,而非单个教师的授课院系数量。

修正思路

  1. 先统计每个教师(KL)对应的授课院系(fac)数量,筛选出院系数量超过1的教师;
  2. 将这些符合条件的教师关联到教师表(L),获取他们所属的机构;
  3. 统计这些机构的唯一总数(避免同一机构有多个符合条件的教师时重复计数)。

修正后的SQL

SELECT COUNT(DISTINCT L.org) AS org_count
FROM L
JOIN (
    -- 子查询:筛选出授课院系数量>1的教师ID
    SELECT R.KL
    FROM R
    JOIN G ON R.KG = G.KG
    GROUP BY R.KL
    HAVING COUNT(DISTINCT G.fac) > 1
) AS qualified_teachers ON L.KL = qualified_teachers.KL;

逻辑说明

  • 子查询qualified_teachers:通过关联R表和G表,按教师ID分组,用COUNT(DISTINCT G.fac)统计每个教师的授课院系数量,筛选出数量超过1的教师ID;
  • 外层查询:将筛选出的教师关联到L表,用COUNT(DISTINCT L.org)统计这些教师所属的唯一机构总数,确保同一机构只被计数一次。

执行该SQL会得到预期结果1,完全匹配需求。

内容的提问来源于stack exchange,提问作者Ростислав Романець

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 09:32:17